题目描述
题目链接:https://leetcode.cn/problems/merge-two-sorted-lists/description/
思路
-
两个链表都是升序链表,新建一个链表,引入伪头节点作为辅助节点,将各节点添加到伪节点之后,再用一个cur节点指向新链表的末尾
-
遍历两个链表,对比每个节点值,将更小的链表节点加入到新链表中文章来源:https://www.toymoban.com/news/detail-648826.html
-
如果其中一个链表未遍历完,那就直接加入到新链表后面文章来源地址https://www.toymoban.com/news/detail-648826.html
实现代码
/**
* 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;
}
}
到了这里,关于Leetcode 21. 合并两个有序链表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!