码迷,mamicode.com
首页 > 其他好文 > 详细

#21 Merge Two Sorted Lists

时间:2018-11-13 20:28:23      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:back   img   span   list   ace   time   新建   link   inf   

技术分享图片

 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

标签:back   img   span   list   ace   time   新建   link   inf   

原文地址:https://www.cnblogs.com/yxcindy/p/9953836.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!