leetcode-优先级队列-23
/**
* <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)
不恋尘世浮华,不写红尘纷扰