23. Merge k Sorted Lists
# Hard
用堆来实现弹出,一共只有k个元素,堆每次弹出最小的数的操作是 ,堆每次删除和修改的操作需要 ,这道题的时间复杂度是
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
int min_index = 0;
ListNode dump = new ListNode();
ListNode h = dump;
while(true) {
boolean isBreak = true;
int min = Integer.MAX_VALUE;
for(int i = 0; i < lists.length; i ++) {
if(lists[i] != null) {
if(lists[i].val < min) {
min_index = i;
min = lists[i].val;
}
isBreak = false;
}
}
if(isBreak)
break;
ListNode temp = new ListNode(lists[min_index].val);
h.next = temp;
h = h.next;
lists[min_index] = lists[min_index].next;
}
h.next = null;
return dump.next;
}
}
Last updated
Was this helpful?