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