#21 Merge Two Sorted Lists

Posted yxcindy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#21 Merge Two Sorted Lists相关的知识,希望对你有一定的参考价值。

技术分享图片

 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode(int x) { val = x; }
 7  * }
 8  */
 9 class Solution {
10     public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
11         
12         ListNode head = new ListNode(-1);
13         ListNode current = head;
14         
15         while(l1 != null && l2 != null){
16             if(l1.val <= l2.val){
17                 current.next = l1;
18                 l1 = l1.next;
19             }else{
20                 current.next = l2;
21                 l2 = l2.next;
22             }
23             current = current.next;
24         }
25         if(l1 == null){
26             current.next = l2;
27         }else{
28             current.next = l1;
29         }
30         
31         return head.next;
32     }
33 }

Time complexity: O(m + n)

Space complexity: O(1)

 

值得提高的地方:

1. LinkedList 可以通过增加index为-1的node来使代码更精简,看起来更好看。

2. 不要掉入一个,把list 2融合进list 1里的怪圈。因为这个LinkedList是单向的,这样只能往中间放,不能往前面放。结合merge sort 的merge function,最好,最简洁的办法是把原来的node拖出来。虽然并没有新建什么,但是在视觉和逻辑上,有一个移出来的感觉。这样看起来更直观。

以上是关于#21 Merge Two Sorted Lists的主要内容,如果未能解决你的问题,请参考以下文章

21. Merge Two Sorted Lists

[LeetCode] 21. Merge Two Sorted Lists_Easy tag: Linked List

LeetCode(21) - Merge Two Sorted Lists

21. Merge Two Sorted Lists

21. Merge Two Sorted Lists

LintCode - Merge Two Sorted List