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

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

解法一:递归算法

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {if(l1==NULL)return l2;if(l2==NULL)return l1;if(l1->val<=l2->val){l1->next = mergeTwoLists(l1->next,l2);  # 递归的作用是假定l1->next和l2之间的大小关系已经排序好return l1;}else{l2->next = mergeTwoLists(l1,l2->next);return l2;}}
};

解法二:迭代法

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {ListNode* l = new ListNode(-1);  # 设定一个哨兵节点ListNode* ll = l;  # 设定一个指针while(l1!=NULL && l2!=NULL)  # 循环迭代条件{if(l1->val<=l2->val)  # 如果当前l1的值小于l2的值{ll->next = l1;  # 对l1链表进行操作l1 = l1->next;  }else{ll->next = l2;  # 否则对l2链表进行操作l2 = l2->next;}ll = ll->next;}if(l1==NULL)  # 因为跳出循环的条件有两个,需要判断哪个链表有剩余需要拼接到创建的链表中ll->next = l2;elsell->next = l1;return l->next;}
};

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

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

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

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

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

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

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

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

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

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

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

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

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

  7. leetcode 21.合并两个有序链表

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

  8. LeetCode 21 ——合并两个有序链表

    1. 题目 2. 解答 新建一个带有哨兵结点的链表,依次比较两个有序链表的结点值,将较小值的结点插入到新链表后面.直到其中一个比较完毕,将另一个链表剩余的结点全部放到新链表最后面即可.最后,可以删除哨 ...

  9. 81. Leetcode 21. 合并两个有序链表 (排序)

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

最新文章

  1. js——页面回到顶部
  2. OpenCASCADE:构建线程
  3. 普通平键的主要尺寸有_艾创米:解密指纹锁锁体尺寸测量方法
  4. 软 件 学 院 实践环节报告
  5. 量子计算机到底多强大?从量子运算看清楚它们的能力
  6. redis实现轮询算法_【07期】Redis中是如何实现分布式锁的?
  7. PHP分页类的实现,返回结果未渲染,更容易在HTML中使用
  8. win10家庭版如何开启组策略
  9. 电脑报合订本_电脑报2018年合订本
  10. 开放源代码的软件测试工具
  11. jsp注册里密码强弱怎么弄_JavaScript注册时密码强度校验代码
  12. Linux-lsof
  13. 介绍3种JavaScript重定向到另一个网页的方法
  14. 不带任何脏字的英文骂人法
  15. 幼儿的健脑菜谱:椰子鸡汤
  16. wireshark抓包新手使用教程
  17. ps如何切html用的图片,前端实战(一)-----用ps把PSD切成HTML能用的图片
  18. Linux运维篇之进程管理②
  19. 海航生态科技舆情大数据平台容器化改造
  20. 不积跬步无以至千里—day2

热门文章

  1. DreamFactory入门指南 - 第2章安装和配置DreamFactory
  2. 容器编排技术 -- 基于Docker本地运行Kubernetes
  3. CSDN开发者周刊 TDengine:专为物联网订制的大数据平台 YugaByte DB:高性能的分布式ACID事务数据库
  4. Linux 查看网段内所有IP
  5. Docker快速搭建Tuleap项目管理平台
  6. python如何批量下载邮箱全部附件_Python编写执行测试用例及定时自动发送最新测试报告邮件...
  7. .net解决Xss攻击
  8. 【JAVA 第三章 流程控制语句】课后习题 随机整数最大值和最小值
  9. 修改oracle数据库内存参数,物理内存扩容,oracle 11g R1数据库相关参数修改
  10. hdf5 matlab,通过MATLAB将矩阵数据写入HDF5文件中的每个数据类型成员