题目:
给出两个排好序的列表,将两个列表按照组合到一起,并且按照从小到大的顺序排好序。
举例:Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4
代码:
public class Merge_Two_Sorted_Lists {
public static class ListNode
{
int val;
ListNode next;
ListNode(int x)
{
val = x;
}
}
public static ListNode mergeTwoLists(ListNode l1, ListNode l2)
{
ListNode temp = new ListNode(0);
ListNode temp1 = temp;
while(l1 != null || l2 != null)
{
if(l1 != null && l2 != null)
{
if(l1.val <= l2.val)
{
temp.next = new ListNode(l1.val);
temp = temp.next;
l1 = l1.next;
}
else
{
temp.next = new ListNode(l2.val);
temp = temp.next;
l2 = l2.next;
}
}
if(l1 == null)
{
while(l2 != null)
{
temp.next = new ListNode(l2.val);
temp = temp.next;
l2 = l2.next;
}
}
if(l2 == null)
{
while(l1 != null)
{
temp.next = new ListNode(l1.val);
temp = temp.next;
l1 = l1.next;
}
}
}
temp1 = temp1.next;
return temp1;
}
public static void main(String[] args)
{
ListNode l1 = null;
ListNode l2 = new ListNode(1);
l2.next = new ListNode(3);
l2.next.next = new ListNode(4);
System.out.println(mergeTwoLists(l1,l2).toString());
}
}
时间复杂度:
O(m+n),m和n分别是两个输入链表的长度。
空间复杂度:
O(m+n)。