2022年7月21日 leecode 刷题日记
作者:互联网
21. 合并两个有序链表
难度简单将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例 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 <= 100
l1
和l2
均按 非递减顺序 排列
思路:
定一个新的指针 当list1和list2都不为空时 比较list1和list2两个链表,将小的赋给新指针的next,最后将剩余的都给新指针的next
要点:
首先需要定义一个头节点 head 再定义一个虚拟头节点 p ,p = head 然后去操作p 最后 return head->next 这样可以避免空指针情况也可以简化代码
代码(c++):
class Solution { public: ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) { ListNode* head = new ListNode; ListNode* p = head; while(list1&&list2) { if(list1->val <= list2->val){ p->next = list1; list1 = list1->next; }else{ p->next = list2; list2 = list2->next; } p = p->next; } if(list1) p->next = list1; else p->next = list2; return head->next; } };
标签:head,ListNode,21,list1,list2,链表,leecode,2022,next 来源: https://www.cnblogs.com/mrkr/p/16500558.html