21.合并两个有序链表

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

示例1:

image.png

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例2:
输入:l1 = [], l2 = []
输出:[]

示例3:
输入:l1 = [], l2 = [0]
输出:[0]

示例4:
输入:x = -101
输出:false

提示:

  • 两个链表的节点数目范围是 [0, 50]
  • -100 <= Node.val <= 100
  • l1 和 l2 均按 非递减顺序 排列

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-two-sorted-lists

思路:

  • 如果 l1 或者 l2 一开始就是空链表 ,那么没有任何操作需要合并,所以我们只需要返回非空链表。否则,我们要判断 l1 和 l2 哪一个链表的头节点的值更小,然后递归地决定下一个添加到结果里的节点。如果两个链表有一个为空,递归结束。

代码:

var mergeTwoLists = function(l1, l2) {
    if(l1==null){
        return l2;
    }else if(l2==null){
        return l1;
    }else if(l1.val < l2.val){
        l1.next = mergeTwoLists(l1.next,l2);
        return l1;
    }else{
        l2.next = mergeTwoLists(l2.next,l1);
        return l2;
    }
};

执行结果:

image.png

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->...
    放下梧菲阅读 1,501评论 0 0
  • 21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成...
    TheKey_阅读 4,214评论 0 1
  • 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入...
    e8889d737099阅读 916评论 0 0
  • 我的解法 我用的是迭代的方法,但是写的并不是很好,下面有更好的迭代解法 题目要求将两个升序列表合并成一个程序列表,...
    怀乡九踏阅读 1,020评论 0 0
  • 这次来写一下 LeetCode 的第 21 题,合并两个有序链表。 题目描述 题目直接从 LeetCode 上截图...
    码农UP2U阅读 3,089评论 0 18