电子商务网站建设策划方案,水稻网站做go分析,seo文章生成器,西安手机网站建站文章目录 #x1f4a1;题目分析#x1f4a1;解题思路#x1f6a9;思路1: 归并排序思想#xff08;不使用带哨兵卫的头节点#xff09;#x1f514;接口源码#xff1a; #x1f4a1;解题思路#x1f6a9;思路2: 归并排序思想#xff08;使用带哨兵卫的头节点#xf… 文章目录 题目分析解题思路思路1: 归并排序思想不使用带哨兵卫的头节点接口源码 解题思路思路2: 归并排序思想使用带哨兵卫的头节点接口源码 题目链接
LeetCode 21.合并两个有序链表 题目分析 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 解题思路
思路1: 归并排序思想不使用带哨兵卫的头节点 取小的进行尾插 图解 接口源码
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{//考虑list1和list2其中一个为空的情况if (list1 NULL){return list2;}if (list2 NULL){return list1;}struct ListNode* head NULL, * tail NULL;//当list1和list2任意一个为空循环就结束while (list1 list2){if (list1-val list2-val){if (tail NULL){head tail list1;}else{tail-next list1;tail tail-next;}list1 list1-next;}else{if (tail NULL){head tail list2;}else{tail-next list2;tail tail-next;}list2 list2-next;}//如果list1没空则把list1后面剩下的数据直接链接到tail-next的后面if (list1){tail-next list1;}//如果list2没空则把list2后面剩下的数据直接链接到tail-next的后面if (list2){tail-next list2;}}return head;
}解题思路
思路2: 归并排序思想使用带哨兵卫的头节点 取小的进行尾插 图解
接口源码
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{//考虑list1和list2其中一个为空的情况if (list1 NULL){return list2;}if (list2 NULL){return list1;}struct ListNode* head NULL, * tail NULL;//带哨兵卫的头节点,这个头节点不存储有效数据head tail (struct ListNode*)malloc(sizeof(struct ListNode));//当list1和list2任意一个为空循环就结束while (list1 list2){if (list1-val list2-val){tail-next list1;tail tail-next;list1 list1-next;}else{tail-next list2;tail tail-next;list2 list2-next;}}//如果list1没空则把list1后面剩下的数据直接链接到tail-next的后面if (list1){tail-next list1;}//如果list2没空则把list2后面剩下的数据直接链接到tail-next的后面if (list2){tail-next list2;}//在前面malloc的空间需要释放释放前先保存head-next的地址struct ListNode* del head;head head-next;free(del);return head;
}希望烙铁们能够理解欧 总结 以上就是本题讲解的全部内容啦 本文章所在【C/C刷题系列】专栏感兴趣的烙铁可以订阅本专栏哦 前途很远也很暗但是不要怕不怕的人面前才有路。 小的会继续学习继续努力带来更好的作品 创作写文不易还多请各位大佬uu们多多支持哦