标签:head ListNode 21 list1 list2 链表 leecode 2022 next
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。