题解 | #牛群的合并#

牛群的合并

https://www.nowcoder.com/practice/d0cb24e1494e4f45a4b7d1a17db0daef

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param lists ListNode类一维数组 
     * @return ListNode类
     */
    public ListNode mergeKLists (ListNode[] lists) {
        // write code here
        // if (lists == null || lists.length == 0) return null;
	  	// 定义一个堆(优先队列),并定义比较器规则 -> 按节点值升序 -> 小顶堆
        Queue<ListNode> queue = new PriorityQueue<>((o1, o2) -> o1.val - o2.val);
	  	// 遍历节点数组,将节点加入到优先队列中
        for (ListNode node : lists) {
		  	// !!! 注意: 这里需要判断边界值,空链表跳过
            if (node != null) queue.offer(node);
        } 
	  	// 定义返回结果的头节点,和一个cur: 用于将遍历过程中的各个节点串联起来
        ListNode head = null, cur = null;
	  	// 只要堆中还有元素,就一直遍历
        while (!queue.isEmpty()) {
		  	// 堆中弹出一个节点
            ListNode node = queue.poll();
		  	// 如果头节点为空,即还没设置,就设置头节点,并将cur指向头节点
            if (head == null) {
			  	// 只会第一次进来
                head = node;
                cur = head;
            } else {
			  	// 否则,将新弹出的节点,接到链表后面
                cur.next = node;
            }
		  	// cur往后走一步
            cur = node;
		  	// 如果node还有下一个节点,就将下一个节点加入到优先队列中
            if (node.next != null) queue.offer(node.next);
        }
	  	// 返回头节点
        return head;
    }
}

#优先队列的应用##有序链表合并#
线性表基础 文章被收录于专栏

链表、递归、栈

全部评论

相关推荐

家人们,我现在真的好纠结。我是26届的,目前还没有实习过。我现在的情况是,想参加秋招,但是感觉自己的简历特别空,没有实习经历会不会秋招直接凉凉啊?可我又听说现在很多公司对26届实习生也不太感冒,说什么不确定性大。而且我最近在准备考公,时间上也有点冲突。要是把时间花在实习上,备考时间就少了。但要是不实习,又怕以后就业有问题😫有没有懂行的友友帮我分析分析:26届现在不实习,秋招找工作真的会很难吗?考公和实习该怎么平衡啊?如果现在不实习,考完公再去找实习还来得及吗?真的太焦虑了,希望大家能给我点建议🙏
小破站_程序员YT:我可能和大家的观点不一样。人的精力是有限的,不能既要还要。你又想实习又想考公最后又要秋招上岸,我觉得哪有那么多的选择。你如果想考上岸,那就全力以赴。如果想秋招上岸,就继续投实习,投没了,就继续准备秋招,秋招不行继续春招。别到最后,考公没上岸,觉得是花了时间浪费在找实习上了, 秋招没上岸,觉得是浪费时间准备考公去了。我是认为很难说可以去平衡 不喜勿喷,可以叫我删除
点赞 评论 收藏
分享
qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
AAA专业长城贴瓷砖刘大爷:这样的简历我会直接丢进垃圾桶,花里胡哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务