码迷,mamicode.com
首页 > 编程语言 > 详细

剑指Offer 合并两个排序的链表

时间:2018-02-14 18:19:08      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:www   ==   合并   bsp   href   www.   min   有一个   public   

  题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

  题目链接:合并两个排序的链表

  思路:类似于2路归并排序的合并操作,先取两个链表首结点值小者作为新链表的首结点,然后遍历两个链表,取小者作为其后继结点,直到至少有一个链表为空,最后把至多一个非空链表首结点作为其后继结点。2路归并排序的具体内容可以看数据结构 归并排序这篇博客。

  步骤:

  1 如果一个链表为空,则返回另一个链表。

  2 取两个链表首结点值小者作为新链表的首结点。

  3 遍历两个链表,取小者作为其后继结点,直到至少有一个链表为空。

  4 把至多一个非空链表首结点作为其后继结点。

  5 返回新链表的首结点。

  时间复杂度:O(len1+len2)。

  Java代码:

 1 /*
 2 public class ListNode {
 3     int val;
 4     ListNode next = null;
 5 
 6     ListNode(int val) {
 7         this.val = val;
 8     }
 9 }*/
10 public class Solution {
11     // 非递归,类似于归并排序
12     public ListNode Merge(ListNode list1, ListNode list2) {
13         // 如果至少有一个链表为空
14         if (list1 == null) {
15             return list2;
16         }
17         if (list2 == null) {
18             return list1;
19         }
20         
21         // 确定首结点
22         ListNode head = null;
23         if (list1.val <= list2.val) {
24             head = list1;
25             list1 = list1.next;
26         } else {
27             head = list2;
28             list2 = list2.next;
29         }
30         
31         ListNode cur = head;
32         while (list1 != null && list2 != null) {
33             ListNode min = null;
34             if (list1.val <= list2.val) {
35                 min = list1;
36                 list1 = list1.next;
37             } else {
38                 min = list2;
39                 list2 = list2.next;
40             }
41             
42             cur.next = min;
43             cur = min;
44         }
45         
46         // 处理剩余结点
47         if (list1 != null) {
48             cur.next = list1;
49         } else {
50             cur.next = list2;
51         }
52         
53         return head;
54     }
55 }

 

剑指Offer 合并两个排序的链表

标签:www   ==   合并   bsp   href   www.   min   有一个   public   

原文地址:https://www.cnblogs.com/WJQ2017/p/8448613.html

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