两个排序链表的合并(Easy)

Posted Bao_Zi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个排序链表的合并(Easy)相关的知识,希望对你有一定的参考价值。

问题来源:选自leetcode 21:合并两个有序链表

问题描述: 

题目给定信息:

  给定两个有序链表,把两个链表合并成一个链表,并且合并后的链表依然是有序的。这两个链表中允许有重复元素

问题分析:

  设置一个临时头节点,同时遍历两个原链表,遍历循环的条件是两个链表都不为空的情况下循环才能继续执行。每次遍历两个链表的节点都要比较两个节点的大小,然后把较小的哪一个节点保存在新建临时头节点所表示链表中。但我们要考虑一些特殊的情况,两个链表长度不一样的时候,当循环推出时候还会有一个链表没有遍历结束,这时候我们要判断是哪一个,然后把没有遍历完的链表直接放在新链表的后面即可。

函数实现:

 1 public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
 2         ListNode newHead = new ListNode(-1);
 3         ListNode pre = newHead;
 4         while(l1!=null&&l2!=null) {
 5             if(l1.val<=l2.val) {
 6                 pre.next = l1;
 7                 l1 = l1.next;
 8             }else {
 9                 pre.next = l2;
10                 l2 = l2.next;
11             }
12             pre = pre.next;
13         }
14         if(l1!=null) {
15             pre.next = l1;
16         }
17         if(l2!= null) {
18             pre.next = l2;
19         }
20         return newHead.next;
21     }

运行结果:

 

以上是关于两个排序链表的合并(Easy)的主要内容,如果未能解决你的问题,请参考以下文章

在编写合并两个排序链表的代码时获取地址错误的运行时负载

剑指offer-合并两个排序的链表

合并两个排序的链表

剑指offer十六之合并两个排序的链表

#21 合并排序后的两个链表

Leetcode(easy ListNode)