龙空技术网

「教3妹学算法-每日3题(3)」合并两个排序的链表

程序员小2 57

前言:

当前姐妹们对“将两个递增有序链表合并为一个递增有序链表”大致比较关切,姐妹们都想要了解一些“将两个递增有序链表合并为一个递增有序链表”的相关内容。那么小编在网摘上搜集了一些对于“将两个递增有序链表合并为一个递增有序链表””的相关内容,希望你们能喜欢,咱们一起来学习一下吧!

3妹

3妹:"池塘边的榕树上, 知了在声声叫着夏天"

2哥:"操场边的秋千上,只有蝴蝶停在上面"

3妹:没想到2哥也会唱这类歌曲啊。

2哥:这首哥在我小时候已经很流行了。3妹怎么想起来唱这首歌了?

3妹:2哥在追忆青春,而我正值青春,不会去追忆,所以只能追忆一下童年了,哈哈哈哈。

2哥:“你的童年我的童年好像都一样?”

3妹:“小小肩膀大大书包,上呀上学堂?”,哈哈哈哈。

2哥:哈哈哈哈

讲课

题目:

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

示例1:

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

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

限制:

0 <= 链表长度 <= 1000

来源:力扣(LeetCode)

链接:

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路:

递归过程建模,同时需要考虑边界情况。

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

java代码1:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */  class Solution {    public ListNode mergeTwoLists(ListNode l1, ListNode 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(l1, l2.next);            return l2;        }    }}

标签: #将两个递增有序链表合并为一个递增有序链表