/**
* <p>給你一個鏈表數組,每個鏈表都已經按升序排列。</p>
*
* <p>請你將所有鏈表合併到一個升序鏈表中,返回合併後的鏈表。</p>
*
* <p> </p>
*
* <p><strong>示例 1:</strong></p>
*
* <pre><strong>輸入:</strong>lists = [[1,4,5],[1,3,4],[2,6]]
* <strong>輸出:</strong>[1,1,2,3,4,4,5,6]
* <strong>解釋:</strong>鏈表數組如下:
* [
* 1->4->5,
* 1->3->4,
* 2->6
* ]
* 將它們合併到一個有序鏈表中得到。
* 1->1->2->3->4->4->5->6
* </pre>
*
* <p><strong>示例 2:</strong></p>
*
* <pre><strong>輸入:</strong>lists = []
* <strong>輸出:</strong>[]
* </pre>
*
* <p><strong>示例 3:</strong></p>
*
* <pre><strong>輸入:</strong>lists = [[]]
* <strong>輸出:</strong>[]
* </pre>
*
* <p> </p>
*
* <p><strong>提示:</strong></p>
*
* <ul>
* <li><code>k == lists.length</code></li>
* <li><code>0 <= k <= 10^4</code></li>
* <li><code>0 <= lists[i].length <= 500</code></li>
* <li><code>-10^4 <= lists[i][j] <= 10^4</code></li>
* <li><code>lists[i]</code> 按 <strong>升序</strong> 排列</li>
* <li><code>lists[i].length</code> 的總和不超過 <code>10^4</code></li>
* </ul>
* <div><div>Related Topics</div><div><li>鏈表</li><li>分治</li><li>堆(優先隊列)</li><li>歸併排序</li></div></div><br><div><li>👍 1874</li><li>👎 0</li></div>
*/
//leetcode submit region begin(Prohibit modification and deletion)
import javax.xml.transform.Templates;
import java.util.Comparator;
import java.util.PriorityQueue;
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
if (lists.length == 0) {
return null;
}
PriorityQueue<ListNode> pq = new PriorityQueue<>(new Comparator<ListNode>() {
@Override
public int compare(ListNode o1, ListNode o2) {
return o1.val - o2.val;
}
});
ListNode dummy = new ListNode(-1);
ListNode curr = dummy;
for (ListNode head : lists) {
if (head != null) {
pq.add(head);
}
}
System.out.println("頭節點都已放入");
while (!pq.isEmpty()) {
ListNode node = pq.poll();
curr.next = node;
curr =curr.next;
if(node.next!=null){
pq.add(node.next);
}
}
return dummy.next;
}
}
//leetcode submit region end(Prohibit modification and deletion)
leetcode-優先級隊列-23
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.