• leetcode 21. Merge Two Sorted Lists 合并两个有序链表(简单)


    一、题目大意

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

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

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/merge-two-sorted-lists
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    二、解题思路

    还是分递归和迭代两种思路来实现,要理解链表

    三、解题方法

    3.1 Java实现-递归

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode() {}
     *     ListNode(int val) { this.val = val; }
     *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
     * }
     */
    class Solution {
        public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
            // 提示信息:
            // 两个链表的节点数目范围是 [0, 50]
            // -100 <= Node.val <= 100
            // l1 和 l2 均按 非递减顺序 排列
            if (list1 == null) {
                return list2;
            }
            if (list2 == null) {
                return list1;
            }
            if (list1.val > list2.val) {
                list2.next = mergeTwoLists(list1, list2.next);
                return list2;
            }
            list1.next = mergeTwoLists(list1.next, list2);
            return list1;
        }
    }
    

    3.2 Java实现-迭代

    class Solution2 {
        public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
            ListNode ans = new ListNode(0);
            ListNode cursor = ans;
            while (list1 != null && list2 != null) {
                if (list1.val <= list2.val) {
                    cursor.next = list1;
                    list1 = list1.next;
                } else {
                    cursor.next = list2;
                    list2 = list2.next;
                }
                cursor = cursor.next;
            }
            cursor.next = list1 != null ? list1 : list2;
            return ans.next;
        }
    }
    

    四、总结小记

    • 2022/9/2 沟通协作成本大呀
  • 相关阅读:
    Unable to open the physical file xxxx. Operating system error 2
    Apache Solr 实现去掉重复的搜索结果
    solr调用lucene底层实现倒排索引源码解析
    lucene-solr本地调试方法
    lucene实战--打分算法没有那么难!
    avalon新一代UI库发布
    让 IE6支持max-height
    迷你MVVM框架 avalonjs 1.3.2发布
    less gradient-vertical 方法的实现
    sass compact方法的实现
  • 原文地址:https://www.cnblogs.com/okokabcd/p/16649478.html
Copyright © 2020-2023  润新知