23. 合并 K 个升序链表 --力扣 --JAVA

简介: 给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。

 题目

给你一个链表数组,每个链表都已经按升序排列。

请你将所有链表合并到一个升序链表中,返回合并后的链表。

解题思路

    1. 对每个链表的首节点进行比较,获取当前的最小节点;
    2. 将每个阶段的最小节点进行链接;

    代码展示

    class Solution {
        public ListNode mergeKLists(ListNode[] lists) {
            ListNode head = null;
            ListNode result = null;
            int count = 0;
            while (count < lists.length){
                count = 0;
                //获取首节点
                if(head == null){
                    int min = Integer.MAX_VALUE;
                    int index = 0;
                    for (int i = 0; i < lists.length; i++){
                        if(lists[i] == null){
                            count++;
                            continue;
                        }
                        int temp = lists[i].val;
                        if(temp < min){
                            min = temp;
                            head = lists[i];
                            index = i;
                        }
                    }
                    if(lists[index] != null) {
                        lists[index] = lists[index].next;
                    }
                    result = head;
                } else {
                    int min = Integer.MAX_VALUE;
                    int index = 0;
                    for (int i = 0; i < lists.length; i++){
                        if(lists[i] == null){
                            count++;
                            continue;
                        }
                        int temp = lists[i].val;
                        if(temp < min){
                            min = temp;
                            result.next = lists[i];
                            index = i;
                        }
                    }
                    if(lists[index] != null) {
                        lists[index] = lists[index].next;
                    }
                    result = result.next;
                }
            }
            return head;
        }
    }

    image.gif


    目录
    打赏
    0
    0
    0
    0
    3
    分享
    相关文章
    |
    9月前
    【力扣】-- 移除链表元素
    【力扣】-- 移除链表元素
    96 1
    |
    3月前
    |
    【LeetCode 热题100】23:合并 K 个升序链表(详细解析)(Go语言版)
    本文详细解析了 LeetCode 热题 23——合并 K 个升序链表的两种解法:优先队列(最小堆)和分治合并。题目要求将多个已排序链表合并为一个升序链表。最小堆方法通过维护节点优先级快速选择最小值,;分治合并则采用归并思想两两合并链表。文章提供了 Go 语言实现代码,并对比分析两种方法的适用场景,帮助读者深入理解链表操作与算法设计。
    113 10
    |
    9月前
    |
    【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
    【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
    81 0
    java数据结构,双向链表的实现
    文章介绍了双向链表的实现,包括数据结构定义、插入和删除操作的代码实现,以及双向链表的其他操作方法,并提供了完整的Java代码实现。
    java数据结构,双向链表的实现
    |
    9月前
    |
    【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
    【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
    67 3
    【链表】算法题(二) ----- 力扣/牛客
    【链表】算法题(二) ----- 力扣/牛客
    |
    11月前
    |
    LeetCode第23题合并 K 个升序链表
    这篇文章介绍了LeetCode第23题"合并K个升序链表"的解题方法,使用分而治之的思想,通过递归合并链表的方式解决了这个难题。
    LeetCode第23题合并 K 个升序链表
    |
    9月前
    |
    力扣(LeetCode)数据结构练习题(3)------链表
    力扣(LeetCode)数据结构练习题(3)------链表
    196 0
    |
    9月前
    |
    LeetCode(一)Java
    LeetCode(一)Java
    109 0
    【链表】算法题(一) ----- 力扣 / 牛客
    【链表】算法题(一) ----- 力扣 / 牛客
    AI助理

    你好,我是AI助理

    可以解答问题、推荐解决方案等