Algorithm之路二十一:Merge Two Sorted Lists

来源:互联网 发布:用手指舒服吗 知乎 编辑:程序博客网 时间:2024/06/09 15:10

题目:

给出两个排好序的列表,将两个列表按照组合到一起,并且按照从小到大的顺序排好序。

举例: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)。