系列文章目录

初识单链表
leedcode.203移除链表元素


文章目录

  • 系列文章目录
  • 方法一:递归
  • 方法二:归并,取小的尾插

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例 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 均按 非递减顺序 排列

方法一:递归


我们以示例1为例子。



这样就可以全部比较完了,升序就完成了。
现在我们已经知道原理了,那么这些结点是怎么连接起来的呢
当程序的递归走到头时,大概形成了这样的千层饼。

然后递归开始return, List 2 的结点4返回上一层递归函数,即List 1 的4结点,于是List 1 结点4的 next就指向List 2 的结点4。

然后是List 2 结点3的 next就指向List 1 的结点4……
这样下去,链表就连接起来了。

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){if(list1 == NULL){return list2;}if(list2 == NULL){return list1;}if(list1->val <= list2->val){list1->next = mergeTwoLists(list1->next,list2);return list1;}else{list2->next = mergeTwoLists(list1,list2->next);return list2;}

方法二:归并,取小的尾插

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){//若为空则返回另一个链表if(list1 == NULL)return list2;if(list2 == NULL)return list1;struct ListNode* head,*tail = NULL;head = tail = NULL;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;}}//当一个链表走完时,尾部与另一个链表连接if(list1){tail->next = list1;}if(list2){tail->next = list2;}return head;
}

五一后要认真学习哦。

leedcode.21合并两个有序链表相关推荐

  1. 【LeetCode】【HOT】21. 合并两个有序链表(递归)

    [LeetCode][HOT 100]21. 合并两个有序链表 文章目录 [LeetCode][HOT 100]21. 合并两个有序链表 package hot;import java.util.Ar ...

  2. [递归|迭代] leetcode 21 合并两个有序链表

    [递归|迭代] leetcode 21 合并两个有序链表 1.题目 题目链接 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2 ...

  3. leetcode 21 java_LeetCode 21. 合并两个有序链表

    LeetCode 21. 合并两个有序链表 题目 将两个升序链表合并为一个新的升序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1-> ...

  4. Java实现 LeetCode 21 合并两个有序链表

    21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1 ...

  5. LeetCode 21. 合并两个有序链表(链表)

    上一篇博客:LeetCode 20. 有效的括号(栈.字符串)  写在前面:大家好!我是ACfun,我的昵称来自两个单词Accepted和fun.我是一个热爱ACM的蒟蒻.最近萌生了刷LeetCode ...

  6. 21. 合并两个有序链表 JavaScript实现

    21. 合并两个有序链表 合并有序链表 一.递归 递归详解 /*** Definition for singly-linked list.* function ListNode(val, next) ...

  7. 两个有序链表序列的交集_LeetCode | 21.合并两个有序链表

    点击上方蓝字关注我们 1.LeetCode | 2.两数相加 2.LeetCode | 206.反转链表 3.LeetCode | 1.两数之和 4.LeetCode | 703.数据流中的第K大元素 ...

  8. 【Java】leetCode 21 合并两个有序链表

    题目 : 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 解题思路 : 1.依据以上两个升序链表进行拼接: 2.先定义一个傀儡节点newHead,用来 ...

  9. LeetCode 21合并两个有序链表22括号生成

    微信搜索bigsai,回复进群,加入打卡.维护不易,欢迎点赞支持! 合并两个有序列表 将两个升序链表合并为一个新的 升序 链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1 ...

  10. LeetCode 21. 合并两个有序链表(单链表)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例:输入:1->2->4, 1-> ...

最新文章

  1. Linux下百度网盘一直进入不了登陆界面的解决方案
  2. 当 JS 工程师遇到了 TypeScript 会发生什么?
  3. oracle 分析函数、GROUPING函数
  4. 约瑟夫环 java实现
  5. linux 运行cmd文件,cmd文件如何在虚拟linux下运行
  6. 剪纸游戏(博弈论)(SG函数)
  7. HDU1166-敌兵布阵
  8. Android小知识-了解下Android系统的显示原理
  9. sqlserver实验心得体会_SQLServer数据库实训总结
  10. php符号%3c%3e啥意思,[PHP防火墙]输入内容存在危险字符,安全起见,已被本站拦截...
  11. select超过固定条数后出现滚动条_12万公里的路虎维修,两个小小的胶套损坏,导致两条后轮胎偏磨!...
  12. 动态设置样式 calc计算
  13. Leetcode-字符串
  14. Kali最新2020.1版本之U盘启动加密与持久化存储制作流程
  15. linux 创建mbr分区,MBR分区类型简介
  16. 【油猴脚本】Hypothesis导出为markdown文件
  17. 通过GitHub和GoDaddy搭建静态个人博客
  18. EditPlus工具添加XML格式化插件
  19. 单独招生计算机笔试是考什么,单招考试考什么内容 单招一般考什么科目
  20. 动画和漫画里ed、op、OVA、ost、bl、gl是什么意思?

热门文章

  1. 面试题(4)Oracle
  2. ubantu软件安装
  3. 886n虚拟服务器ip,tl-wr886n怎么配置ip带宽控制
  4. 中国传统节日简介、由来、习俗
  5. DataV-数据-api方式
  6. gcc中的 -I -L(大写l) -l(小写l) -Wl,-rpath 选项
  7. 自定义devexprsss分页控件
  8. Unity -- UI -- Scroll Rect
  9. 她做销售6年,从底薪3K转行程序员狂飙2W,用两年转行经历致想转行的你
  10. 基于Socket编程的网络聊天室