關係運算符和邏輯運算子
阿新 • • 發佈:2021-08-14
Mergeksorted linked lists and return it as one sorted list. Analyze and describe its complexity.
Example:
Input: [ 1->4->5, 1->3->4, 2->6 ] Output: 1->1->2->3->4->4->5->6
合併K個排序連結串列。
時間O(nlogk) - k是連結串列的數量
空間O(n)
思路:最優解應該是用priority queue解決
優先佇列預設是小根堆
存放的值要是可比較的型別
PriorityQueue<ListNode> queue=new PriorityQueue<>(lists.length,(a,b)->a.val-b.val); queue.add(new ListNode()); queue.poll queue.isEmpty()
class Solution { public ListNode mergeKLists(ListNode[] lists) { if(lists==null||lists.length==0){ return null; } PriorityQueue<ListNode> minValQ=new PriorityQueue<>(lists.length,(a,b)->a.val-b.val); for(ListNode node:lists){ if(node!=null){ minValQ.add(node); } } ListNode dummy=new ListNode(0); ListNode cur=dummy; while(!minValQ.isEmpty()){ cur.next=minValQ.poll(); cur=cur.next; if(cur.next!=null){ minValQ.add(cur.next); } } return dummy.next; } }