今天刷Leetcode, 要写个MergeKSortedList function,上了Discuss区,看到大神的解法,跪舔。。
definition
class ListNode {
private int val;
private ListNode next;
public ListNode (int x) {
this.val = x;
this.next = null;
}
}
public ListNode mergeKSortedList (List<ListNode> lists) {
if (lists == null || lists.size() == 0) return null;
Queue<ListNode> queue = new PriorityQueue<ListNode>(lists.size(), new Comparator(){
@Override
protected int compareTo (ListNode o1, ListNode o2) {
return o1.val == o2.val ? 0 : o1.val - o2.val;
}
});
for (ListNode node : lists) {
if (node != null)
queue.add(node);
}
ListNode head = new ListNode(-1);
ListNode tail = head;
while (!queue.isEmpty()) {
tail.next = queue.poll();
tail = tail.next;
if (tail.next != null) {
queue.add(tail.next);
}
}
return head.next;
}
看到了吗?多么风骚,妈妈再也不用担心我像写C/C++一样写mergeSort了。。。