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


    目录
    相关文章
    |
    2月前
    【力扣】-- 移除链表元素
    【力扣】-- 移除链表元素
    36 1
    |
    2月前
    Leetcode第21题(合并两个有序链表)
    这篇文章介绍了如何使用非递归和递归方法解决LeetCode第21题,即合并两个有序链表的问题。
    51 0
    Leetcode第21题(合并两个有序链表)
    |
    2月前
    |
    算法
    【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
    【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
    32 0
    |
    3月前
    |
    Java
    java数据结构,双向链表的实现
    文章介绍了双向链表的实现,包括数据结构定义、插入和删除操作的代码实现,以及双向链表的其他操作方法,并提供了完整的Java代码实现。
    java数据结构,双向链表的实现
    |
    2月前
    |
    存储 安全 Java
    【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
    【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
    26 3
    |
    2月前
    |
    算法
    【链表】算法题(二) ----- 力扣/牛客
    【链表】算法题(二) ----- 力扣/牛客
    |
    2月前
    LeetCode第二十四题(两两交换链表中的节点)
    这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
    22 0
    LeetCode第二十四题(两两交换链表中的节点)
    |
    2月前
    Leetcode第十九题(删除链表的倒数第N个节点)
    LeetCode第19题要求删除链表的倒数第N个节点,可以通过快慢指针法在一次遍历中实现。
    44 0
    Leetcode第十九题(删除链表的倒数第N个节点)
    |
    2月前
    |
    索引
    力扣(LeetCode)数据结构练习题(3)------链表
    力扣(LeetCode)数据结构练习题(3)------链表
    90 0
    |
    2月前
    【LeetCode 10】142. 环形链表 II
    【LeetCode 10】142. 环形链表 II
    21 0