题目:

Merge two sorted linked lists and return it as a new list. The new list
should be made by splicing together the nodes of the first two lists.

题解:

这道题是链表操作题,题解方法很直观。

首先,进行边界条件判断,如果任一一个表是空表,就返回另外一个表。

然后,对于新表选取第一个node,选择两个表表头最小的那个作为新表表头,指针后挪。

然后同时遍历两个表,进行拼接。

因为表已经是sorted了,最后把没有遍历完的表接在新表后面。

由于新表也会指针挪动,这里同时需要fakehead帮助记录原始表头。

代码如下:

 1     public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
 2         if(l1==null)
 3             return l2;
 4         if(l2==null)
 5             return l1;
 6             
 7         ListNode l3;
 8         if(l1.val<l2.val){
 9             l3 = l1;
             l1 = l1.next;
         }else{
             l3 = l2;
             l2 = l2.next;
         }
         
         ListNode fakehead = new ListNode(-1);
         fakehead.next = l3;
         while(l1!=null&&l2!=null){
             if(l1.val<l2.val){
                 l3.next = l1;
                 l3 = l3.next;
                 l1 = l1.next;
             }else{
                 l3.next = l2;
                 l3 = l3.next;
                 l2 = l2.next;
             }
         }
         
         if(l1!=null)
             l3.next = l1;
         if(l2!=null)
             l3.next = l2;
         return fakehead.next;
     }

更简便的方法是,不需要提前选新表表头。

对于新表声明两个表头,一个是fakehead,一个是会挪动的指针,用于拼接。同时,边界条件在后面的补拼中页解决了,所以开头没必要做边界判断,这样代码简化为:

 1     public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
 2         ListNode fakehead = new ListNode(-1);
 3         ListNode l3 = fakehead;
 4         while(l1!=null&&l2!=null){
 5             if(l1.val<l2.val){
 6                 l3.next = l1;
 7                 l3 = l3.next;
 8                 l1 = l1.next;
 9             }else{
                 l3.next = l2;
                 l3 = l3.next;
                 l2 = l2.next;
             }
         }
         
         if(l1!=null)
             l3.next = l1;
         if(l2!=null)
             l3.next = l2;
         return fakehead.next;
     }

Merge Two Sorted Lists leetcode java的更多相关文章

  1. Merge k Sorted Lists Leetcode Java

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 使 ...

  2. Merge Two Sorted Lists - LeetCode

    目录 题目链接 注意点 解法 小结 题目链接 Merge Two Sorted Lists - LeetCode 注意点 两个链表长度可能不一致 解法 解法一:先比较两个链表长度一致的部分,多余的部分 ...

  3. 23. Merge k Sorted Lists - LeetCode

    Question 23. Merge k Sorted Lists Solution 题目大意:合并链表数组(每个链表中的元素是有序的),要求合并后的链表也是有序的 思路:遍历链表数组,每次取最小节点 ...

  4. Merge Two Sorted Lists—LeetCode

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  5. Merge k Sorted Lists [LeetCode]

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. S ...

  6. 蜗牛慢慢爬 LeetCode 23. Merge k Sorted Lists [Difficulty: Hard]

    题目 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity ...

  7. Java for LeetCode 023 Merge k Sorted Lists

    Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 解 ...

  8. [LeetCode] Merge Two Sorted Lists 混合插入有序链表

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  9. [LeetCode] 21. Merge Two Sorted Lists 混合插入有序链表

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

随机推荐

  1. FPGA In/Out Delay Timing Constaint

    先简单说说这段时间遇到的问题.FPGA采集前端scaler的视频数据.像素时钟(随路时钟),视频数据,行场同步,DE.这些信号进入FPGA后.通过CSC(颜色空间转换).输出后的图像有噪点.通过查看时 ...

  2. 美团客户端响应式框架EasyReact开源啦

    前言 EasyReact 是一款基于响应式编程范式的客户端开发框架,开发者可以使用此框架轻松地解决客户端的异步问题. 目前 EasyReact 已在美团和大众点评客户端的部分业务中进行了实践,并且持续 ...

  3. iOS Sprite Kit教程之场景的设置

    iOS Sprite Kit教程之场景的设置 Sprite Kit中设置场景 在图2.8所示的效果中,可以看到新增的场景是没有任何内容的,本节将讲解对场景的三个设置,即颜色的设置.显示模式的设置以及测 ...

  4. Tkinter制作简单的python编辑器

    想要制作简单的python脚本编辑器,其中文字输入代码部分使用Tkinter中的Text控件即可实现. 但是问题是,如何实现高亮呢?参考python自带的编辑器:python27/vidle文件夹中的 ...

  5. Sass 基础教程

    0. Sass 文件后缀名 sass 有两种后缀名文件:一种后缀名为 sass,不使用大括号和分号:另一种就是我们这里使用的 scss 文件,这种和我们平时写的 css 文件格式差不多,使用大括号和分 ...

  6. curl_get和curl_post,伪造请求头,绕过防盗链下载文件

    //curl-get function curl_get($url, $timeout = 10) { $ch = curl_init();//初始化 curl_setopt($ch, CURLOPT ...

  7. [UOJ#245][UER#7]天路(近似算法)

    允许5%的相对误差,意味着我们可以只输出$\log_{1.05} V$种取值并保证答案合法.并且注意到答案随着区间长度而单增,故取值不同的答案区间是$O(\log_{1.05} V)$的. 于是初始x ...

  8. BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 lct 动态树 splay

    http://www.lydsy.com/JudgeOnline/problem.php?id=2002 http://blog.csdn.net/frods/article/details/5224 ...

  9. 【spfa】【动态规划】zoj3847 Collect Chars

    转载自:http://blog.csdn.net/madaidao/article/details/42616743 Collect Chars Time Limit: 2 Seconds       ...

  10. Android中Service与IntentService的使用比较

    不知道大家有没有和我一样,以前做项目或者练习的时候一直都是用Service来处理后台耗时操作,却很少注意到还有个IntentService,前段时间准备面试的时候看到了一篇关于IntentServic ...