#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的主要内容,如果未能解决你的问题,请参考以下文章
[LeetCode] 21. Merge Two Sorted Lists_Easy tag: Linked List