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


    目录
    相关文章
    |
    6天前
    《剑指offer》——合并两个排序的链表
    《剑指offer》——合并两个排序的链表
    |
    6天前
    |
    算法 Java C语言
    C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
    C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
    |
    6天前
    |
    存储
    实现单链表的基本操作(力扣、牛客刷题的基础&笔试题常客)
    实现单链表的基本操作(力扣、牛客刷题的基础&笔试题常客)
    145 38
    |
    6天前
    |
    Java
    java的excel列行合并模版
    java的excel列行合并模版
    |
    6天前
    |
    Java C语言
    剑指offer(牛客)——合并两个排序的链表
    剑指offer(牛客)——合并两个排序的链表
    9 1
    |
    6天前
    |
    索引
    每日一题:力扣328. 奇偶链表
    每日一题:力扣328. 奇偶链表
    14 4
    |
    6天前
    【力扣】148. 排序链表
    【力扣】148. 排序链表
    |
    6天前
    |
    索引
    【力扣】142. 环形链表 II
    【力扣】142. 环形链表 II
    |
    6天前
    【力扣】19. 删除链表的倒数第 N 个结点
    【力扣】19. 删除链表的倒数第 N 个结点
    |
    6天前
    |
    C语言 C++ 索引
    【力扣】141. 环形链表、160. 相交链表、206.反转链表、234. 回文链表
    【力扣】141. 环形链表、160. 相交链表、206.反转链表、234. 回文链表

    热门文章

    最新文章