题解 | #合并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;
    }
}

全部评论

相关推荐

泽哥的小屋:目前的简历结构有些杂乱,重点不够突出,HR在短时间内可能抓不住你的核心优势。以下是我针对运营方向(电商运营/用户运营/产品运营等)给出的具体修改建议,你可以照着调整。 1.目前内容偏多,建议精简到一页,删掉冗余描述 2. 保留学校、专业、GPA/排名、奖学金,删掉“核心能力”里的大段描述(这部分可以放到技能或总结里) 3. 闲鱼店铺运营是最大亮点,完全匹配电商运营/用户运营。建议独立成段,并强化运营动作和结果。原文偏流水账,可以拆成3-4个小点,用数据说话。 4. 校园经历这部分可以合并,挑2-3个最有代表性的,用运营语言改写。 5. 生物信息学项目与运营关联较弱,但可以突出数据分析能力。建议改写为强调数据清洗、可视化、分析等技能,并说明这些能力如何用于运营决策 6. 在简历顶部可以加一句简短的个人总结,例如: 具备数据分析能力和闲鱼电商实战经验的运营新人,擅长从0到1项目落地与用户运营,追求用数据驱动增长 还有其他问题可以私信咨询我
非技术求职现状
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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