首页 > 其他 > 详细

LeetCode刷题笔记

时间:2019-08-17 18:02:39      阅读:93      评论:0      收藏:0      [点我收藏+]

23. Merge k Sorted Lists

要点:

1. 学会数据结构PriorityQueue(优先队列)的用法, 通过给优先队列传入自定义的经过复写compare方法的比较器实现大根堆或者小根堆。

2. PriorityQueue中不能存放null值,所以每次更新优先队列都需要作判空检查,如遇null值直接剔除。 

 

 1 import java.util.Comparator;
 2 import java.util.PriorityQueue;
 3 
 4 class Solution {
 5     public ListNode mergeKLists(ListNode[] lists) {
 6         //要点1
 7         PriorityQueue<ListNode> nodesQueue = new PriorityQueue<>(new Comparator<ListNode>() {
 8             @Override
 9             //将compare方法重写为比较ListNode的val值大小
10             public int compare(ListNode o1, ListNode o2) {
11                 return o1.val-o2.val;
12             }
13         });
14 
15         ListNode head = new ListNode(0);
16         for(ListNode node:lists)
17             if(node!=null)
18                 nodesQueue.add(node);
19 
20         ListNode p = head;
21         while(!nodesQueue.isEmpty()){
22             //判空检查,如果ListNode的下一个Node是null,则取出该Node后不再将其下一个节点放回优先队列。
23             if(nodesQueue.peek().next==null){
24                 p.next = new ListNode(nodesQueue.poll().val);
25                 p = p.next;
26             }else{
27                 ListNode tmp = nodesQueue.poll();
28                 p.next = new ListNode(tmp.val);
29                 p = p.next;
30                 nodesQueue.add(tmp.next);
31             }
32         }
33         return head.next;
34     }
35 
36 }

 

LeetCode刷题笔记

原文:https://www.cnblogs.com/greatLong/p/11369523.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!