Without the precondition that both lists are sorted before the merge + sort operation, you cannot do this in O (n) time (or "using one cycle").
Add this prerequisite and the problem is very simple.
Keep two iterators, one for each list. In each cycle, compare an item from each list and select the smaller one. Enlarge this list with an iterator. If the item you are about to insert in the last list is already the last item in this list, skip the insert.
In pseudo code:
List a = { 1, 3, 5, 7, 9 } List b = { 2, 4, 6, 8, 10 } List result = { } int i=0, j=0, lastIndex=0 while(i < a.length || j < b.length)
source share