力扣HOT100:T.21 合并两个有序链表|双指针法算法实现笔记及打卡(11/100)

张开发
2026/5/18 2:11:08 15 分钟阅读
力扣HOT100:T.21 合并两个有序链表|双指针法算法实现笔记及打卡(11/100)
【力扣hot100】【LeetCode 21】合并两个有序链表双指针法重要提示由于力扣LeetCode无需自行写输入输出为了避免重复“卡尔考研”武大机试爆0的尴尬局面博主将对以往题解进行逐步更新完善本文已于2026.4.8更新放心食用^ _ ^————————————————————————————————————————将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1输入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 100l1和l2均按非递减顺序排列参考解法class Solution { public: ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) { ListNode* dummy new ListNode(); //创建一个空头结点 ListNode* p dummy; //指针指向头结点 while (list1 list2){ if (list1 - val list2 - val){ p - next list1; //如果链表1的节点的值小于链表2的节点的值则将p指向list1的小节点中 list1 list1 - next; //list1指针后移一位 }else { p - next list2; list2 list2 - next; } p p - next; //p始终指向结果最后一个节点 } //如果任意链表先遍历完毕则剩下的元素直接挂上去即可 if (list1) p - next list1; else if (list2) p - next list2; return dummy - next; } };

更多文章