递归方法
public class ListNode
{
public int val;
public ListNode next;
public ListNode(int val = 0, ListNode next = null)
{
this.val = val;
this.next = next;
}
}
public class Solution
{
public ListNode MergeTwoLists(ListNode l1, ListNode l2)
{
if (l1 == null || l2 == null)
{
return l1 == null ? l2 : l1;
}
if (l1.val < l2.val)
{
l1.next = MergeTwoLists(l1.next, l2);
return l1;
}
else
{
l2.next = MergeTwoLists(l1, l2.next);
return l2;
}
}
}
迭代方法
public class ListNode
{
public int val;
public ListNode next;
public ListNode(int val = 0, ListNode next = null)
{
this.val = val;
this.next = next;
}
}
public class Solution
{
public ListNode MergeTwoLists(ListNode l1, ListNode l2)
{
ListNode prehead = new ListNode(-1);
ListNode prev = prehead;
while (l1 != null && l2 != null)
{
if (l1.val <= l2.val)
{
prev.next = l1;
l1 = l1.next;
}
else
{
prev.next = l2;
l2 = l2.next;
}
prev = prev.next;
}
// exactly one of l1 and l2 can be non-null at this point, so connect
// the non-null list to the end of the merged list.
prev.next = l1 == null ? l2 : l1;
return prehead.next;
}
}