Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
public ListNode mergeTwoLists(ListNode l1, ListNode l2) { //java
if(l2 == null)
return l1;
if(l1 == null)
return l2;
ListNode tmp1 = l1;
ListNode tmp2 = l2;
ListNode head = new ListNode(0);
ListNode result = head;
while(tmp1 != null && tmp2 != null){
if(tmp1.val > tmp2.val){
ListNode node = new ListNode(tmp2.val);
result.next = node;
result = result.next;
tmp2 = tmp2.next;
}
else{
ListNode node = new ListNode(tmp1.val);
result.next = node;
result = result.next;
tmp1 = tmp1.next;
}
}
if(tmp2 == null)
result.next = tmp1;
else result.next = tmp2;
return head.next;
}
public ListNode mergeKLists(List<ListNode> lists) {
if(lists == null ||lists.size() == 0)
return null;
if(lists.size()==1) return lists.get(0);
return mergeTwoLists(mergeKLists(lists.subList(0,lists.size()/2)),mergeKLists(lists.subList(lists.size()/2,lists.size())));
}[leetcode]23 Merge k Sorted Lists
原文:http://blog.csdn.net/chenlei0630/article/details/42684393