• 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.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<ListNode>(
    				lists.length,(a,b)->(a.val - b.val)
    		);
    
    		ListNode dummy = new ListNode(-1);
    		ListNode p = dummy;
    
    		//通过优先级队列, 小根堆, 排序头节点
    		for(ListNode head : lists){
    			if(head != null){
    				pq.add(head);
    			}
    		}
    
    		while(!pq.isEmpty()){
    			ListNode temp = pq.poll();
    			p.next = temp;
    
    			//每次排序完一个节点,然后放入这个节点的下一个节点
    			if(temp.next!=null){
    				pq.add(temp.next);
    			}
    			p = p.next;
    
    		}
    		return dummy.next;
        }
    }
    //leetcode submit region end(Prohibit modification and deletion)
    
    
    
  • 相关阅读:
    重量传感器
    cotex_m3内核提供的ITM串口打印调试
    unsigned char 转字符串:
    手工双面打印
    Windows系统(服务器)忘记管理员登录密码:
    标准电流信号为什么是4-20MA?(网络摘录)
    LPC1768之ISP
    万用表的位数
    485收发控制器:
    [LeetCode] 534. Design TinyURL 设计短网址
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/16115614.html
Copyright © 2020-2023  润新知