美文网首页
【教3妹学算法-每日3题(3)】合并两个排序的链表

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

作者: 程序员小2 | 来源:发表于2022-07-09 14:46 被阅读0次

    插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
    坚持不懈,越努力越幸运,大家一起学习鸭~~~

    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)
    链接:https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    思路:

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

    如果 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;
            }
        }
    }
    
    

    相关文章

      网友评论

          本文标题:【教3妹学算法-每日3题(3)】合并两个排序的链表

          本文链接:https://www.haomeiwen.com/subject/cegmbrtx.html