题解 | #牛群的合并#

牛群的合并

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

一、知识点:

队列、链表

二、文字分析:

优先队列(最小堆)来合并牛群。首先,我们遍历每个牛群中的牛,并将它们的编号依次添加到最小堆中。然后,我们从最小堆中逐个取出最小的编号,并构建一个新的链表作为合并后的结果。最后,返回合并后的链表。

三、编程语言:

java

四、正确代码:

import java.util.*;

public class Solution {
    public ListNode mergeKLists(ListNode[] lists) {
        // 利用优先队列(最小堆)来进行牛群的合并
        PriorityQueue<Integer> pq = new PriorityQueue<>();

        // 遍历每个牛群中的牛,将牛的编号添加到最小堆中
        for (ListNode cowList : lists) {
            while (cowList != null) {
                pq.offer(cowList.val);
                cowList = cowList.next;
            }
        }

        // 构建合并后的结果链表
        ListNode dummy = new ListNode(-1);
        ListNode curr = dummy;
        while (!pq.isEmpty()) {
            curr.next = new ListNode(pq.poll());
            curr = curr.next;
        }

        return dummy.next;
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 15:27
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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