leetcode-優先級隊列-23

/** * <p>給你一個鏈表數組,每個鏈表都已經按升序排列。</p> * * <p>請你將所有鏈表合併到一個升序鏈表中,返回合併後的鏈表。</p> * * <p>&nbsp;</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-&gt;4-&gt;5, * 1-&gt;3-&gt;4, * 2-&gt;6 * ] * 將它們合併到一個有序鏈表中得到。 * 1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4-&gt;5-&gt;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>&nbsp;</p> * * <p><strong>提示:</strong></p> * * <ul> * <li><code>k == lists.length</code></li> * <li><code>0 &lt;= k &lt;= 10^4</code></li> * <li><code>0 &lt;= lists[i].length &lt;= 500</code></li> * <li><code>-10^4 &lt;= lists[i][j] &lt;= 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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章