题解 | #合并k个已排序的链表#

合并k个已排序的链表

https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6

import java.util.*;

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

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param lists ListNode类ArrayList
     * @return ListNode类
     */
    public ListNode mergeKLists (ArrayList<ListNode> lists) {
           // 自定义比较器:默认就是从小到大排列
        Comparator<ListNode> comparator = Comparator.comparingInt(node -> node.val);
        PriorityQueue<ListNode> queue = new PriorityQueue<>(comparator);
        for (ListNode head : lists) {
		  // 测试用例 里面又一个 空的链表 所以要判断空  如果把空的加入到 queue里面 会出现问题 null 调用触发空指针异常
            if (head != null) {
                queue.offer(head);
            }
        }
	  // 自定义头结点  注意返回的是dumy.next
        ListNode dummy = new ListNode(0);
        ListNode current = dummy;
	  // 循环结束条件是 queue不空  如果空了 表示全部处理完毕了
        while (!queue.isEmpty()) {
		  // 出对一个小的值  把后一个加入进来  但是要判断是不是null
            ListNode polled = queue.poll();
            if (polled.next != null) {
                queue.offer(polled.next);
            }
		  // 指针后移一位
            current.next = polled;
            current = current.next;
        }
        return dummy.next;
    }
}

全部评论

相关推荐

05-12 17:28
已编辑
门头沟学院 硬件开发
ldf李鑫:不说公司名祝你以后天天遇到这样的公司
点赞 评论 收藏
分享
野猪不是猪🐗:(ja)va学弟这招太狠了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务