ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

合并两个顺序的链表

2022-04-08 12:02:39  阅读:129  来源: 互联网

标签:顺序 ListNode val 合并 next 链表 l2 l1 null


链接:剑指 Offer 25. 合并两个排序的链表 - 力扣(LeetCode) (leetcode-cn.com)

本题中要注意解决两个问题:

1.要合并的两个链表l1,l2可能为空,所以要对这两个链表为空的情况进行三种类型讨论:(1).都为空 (2).1空,2不空 (3).1不空,2空

2.一开始的头节点设置要先处理,找两链表的头节点值中小的那一个

 

前置条件:

1 public class ListNode {
2          int val;
3          ListNode next;
4          ListNode(int x) { val = x; }
5     }

 

代码:

 1 public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
 2         if (l1 == null && l2 == null) {
 3             return null;
 4         }
 5         int min;
 6         if (l1 == null) {
 7             min = l2.val;
 8         }
 9         else if (l2 == null) {
10             min = l1.val;
11         }
12         else {
13             min = Math.min(l1.val, l2.val);
14         }
15         ListNode p = l1,q = l2;
16         ListNode head = new ListNode(min);
17         if (l1 != null && head.val == l1.val) {
18             p = p.next;
19         }
20         else {
21             q = q.next;
22         }
23         ListNode r = head;
24         while (p != null && q != null) {
25             if (p.val < q.val) {
26                 r.next = p;
27                 p = p.next;
28                 r = r.next;
29             }
30             else {
31                 r.next = q;
32                 q = q.next;
33                 r = r.next;
34             }
35         }
36         while (p != null) {
37             r.next = p;
38             p = p.next;
39             r = r.next;
40         }
41         while (q != null) {
42             r.next = q;
43             q = q.next;
44             r = r.next;
45         }
46         r = null;
47         return head;
48     }

 

标签:顺序,ListNode,val,合并,next,链表,l2,l1,null
来源: https://www.cnblogs.com/jue1e0/p/16116213.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有