LeetCode第23题合并 K 个升序链表

继续打卡算法题,今天学习的是LeetCode的第23题合并K个升序链表,这道题目是道hard题。算法题的一些解题思路和技巧真的非常巧妙,每天看一看算法题和解题思路,我相信对我们的编码思维和编码能力有一些帮助。

哈哈,今天挑战第一道hard题,之前已经学习过合并两个有序链表 ,今天这题是它的升级plus版本

分析一波题目

因为两个有序链表我们可以合并,那么合并k个我们可以采用分而治之的思想解决。

第一次合并k个中的两个,然后将合并的结果和k个中的下一个进行合并,依次类推。

编码解决

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 mergeKLists(ListNode[] lists) {

        if(lists == null || lists.length == 0) {
            return null;
        }

        if( lists.length == 1) {
            return lists[0];
        }

        //递归 每次合并两个数组, 最后剩下0个链表
        ListNode list= lists[0];
        for(int i= 1; i< lists.length; i++) {
            list = merge2Lists(list, lists[i]);
        }    
        return list;

    }

    //递归 每次合并两个数组, 最后剩下0个链表
    public ListNode merge2Lists(ListNode list1 , ListNode list2) {

            //list1已经到到尾部 递归结束
            if(list1 == null ) {
                return list2;
            }
            //list2已经到到尾部
            if(list2 == null) {
                return list1;
            }

            if(list1.val < list2.val) {
                //递归
                list1.next = merge2Lists(list1.next, list2);
                return list1;
            }
            //递归
            list2.next = merge2Lists(list1, list2.next);
            return list2;
    }
}

总结

分而治之思想也是一个常用解题技巧,如果指定子问题可以求解,原问题分解成多个子问题求解,再合并结果。

相关推荐
江畔柳前堤5 小时前
GO01-Go 语言与主流编程语言深度对比
开发语言·人工智能·后端·微服务·云原生·golang·go
世界哪有真情5 小时前
拿人类意识卡 AI?等于用 bug 验收正式产品
前端·人工智能·后端
:-)5 小时前
算法-归并排序
java·开发语言·数据结构·算法·排序算法
kyriewen7 小时前
面试官让我优化一个卡死的表格,我打开 Claude 五秒重写,他放下咖啡问我要不要来当组长
前端·javascript·面试
Csvn7 小时前
Day 3:LIKE 与模式匹配 — 让查询学会"模糊搜索"
后端·sql
Hazenix9 小时前
Go 指南:一篇文章速通 Golang
开发语言·后端·golang
灯澜忆梦9 小时前
GO_复合类型---指针
开发语言·后端·golang
IT_陈寒9 小时前
SpringBoot自动装配坑了我一天,原来问题出在这
前端·人工智能·后端
Jerry9 小时前
LeetCode 101. 对称二叉树
算法
黄敬峰9 小时前
从零搭建 RAG 应用 —— 一个故事带你彻底搞懂检索增强生成
面试