Leetcode 21. 合并两个有序链表

  • Post author:
  • Post category:其他




题目描述

题目链接:

https://leetcode.cn/problems/merge-two-sorted-lists/description/


在这里插入图片描述



思路

  • 两个链表都是升序链表,新建一个链表,引入伪头节点作为辅助节点,将各节点添加到伪节点之后,再用一个cur节点指向新链表的末尾

  • 遍历两个链表,对比每个节点值,将更小的链表节点加入到新链表中

  • 如果其中一个链表未遍历完,那就直接加入到新链表后面



实现代码

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        ListNode list = new ListNode(); //伪头节点
        ListNode cur = list; // cur 指向新链表的末尾
        while (list1 != null && list2 != null) {
            if (list1.val < list2.val) {
                cur.next = list1; // 把 list1 加到新链表中
                list1 = list1.next;
            } else { 
                cur.next = list2; // 把 list2 加到新链表中
                list2 = list2.next;
            }
            cur = cur.next;
        }
        cur.next = list1 != null ? list1 : list2; // 拼接剩余的链表
        return list.next;
    }
}



版权声明:本文为qq_43800119原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。