> LeetCode:合并两个有序链表_21 - Yuyy
Yuyy
Yuyy
LeetCode:合并两个有序链表_21

思路

基础班双指针,还有归并的思想

题目

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 

 

示例 1:

https://assets.leetcode.com/uploads/2020/10/03/merge_ex1.jpg

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

 

提示:

  • 两个链表的节点数目范围是 [0, 50]
  • -100 <= Node.val <= 100
  • l1l2 均按 非递减顺序 排列
Related Topics
  • 递归
  • 链表
  • 👍 1887
  • 👎 0
  • 代码

            public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
                // 虚拟头结点挺有用的
                ListNode dummy = new ListNode();
                // 结果链表的指针
                ListNode p = dummy;
                // 双指针
                ListNode p1 = l1;
                ListNode p2 = l2;
                while (p1 != null && p2 != null) {
                    if (p1.val < p2.val) {
                        p.next = p1;
                        // 双指针移动
                        p1 = p1.next;
                    } else {
                        p.next = p2;
                        p2 = p2.next;
                    }
                    // 别忘了结果指针也要移动
                    p = p.next;
                }
                // 将长的那节直接和结果链表接上
                if (p1 != null) {
                    p.next = p1;
                } else {
                    p.next = p2;
                }
                return dummy.next;
            }
    

    发表评论

    textsms
    account_circle
    email

    Yuyy

    LeetCode:合并两个有序链表_21
    思路 基础班双指针,还有归并的思想 题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。    示例 1: 输入:l1 = [1,2,4],…
    扫描二维码继续阅读
    2021-09-04
    友情链接
    标签
    归档
    近期文章