• 算法题:21合并两个有序链表


    算法题:21合并两个有序链表

    题目

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

    示例

    示例1:

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

    示例 2:

    输入:l1 = [], l2 = []
    输出:[]

    示例 3:

    输入:l1 = [], l2 = [0]
    输出:[0]

    来源:力扣(LeetCode)

    思路

    由题目所知道,这两个链表都升序排列的,所以我们比较的思想就要定义在比大小

    因为实例2和实例3可知道,如果出现了由任何一个为空链表或者两个链表都为空,那么就直接为不为空链表的值

    所以我们可以使用if-else来节省计算,排除为空的情况

    因为是链表我们没有办法,像数组一样遍历,所以我们选择递归函数,进行

    比较表头数据大小,谁小就在此链表的基础下进行合并,最后将链表返回

    代码

    public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        if (list1 == null) {
            return list2;
        } else if (list2 == null) {
            return list1;
        } else if (list1.val < list2.val) {
            list1.next = mergeTwoLists(list1.next, list2);
            return list1;
        } else {
            list2.next = mergeTwoLists(list1, list2.next);
            return list2;
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    固定VMware中Linux系统的ip地址
    VMware安装CentOS最小化开发环境导引
    源码编译部署LAMP
    ElementUI表单校验
    封装, 继承, 多态详解
    设计模式之观察者模式
    Python 中的万能之王 Lambda 函数
    【学习笔记】最短路 +生成树
    Hibernate 基本操作、懒加载以及缓存
    Docker 安装 reids
  • 原文地址:https://blog.csdn.net/m0_47711130/article/details/126134672