Ideas: 1.Divide & Conquer 2.Merge sorted list.
1 /**2 * Definition for singly-linked list.3 * public class ListNode {4 * int val;5 * ListNode Next;6 * ListNode (int x) {val = x;}7 * }8 */9 Public classSolution {Ten PublicListNode mergeklists (listnode[] lists) { One if(Lists = =NULL|| Lists.length = = 0) { A return NULL; - } - returnMergehelper (lists, 0, lists.length-1); the } - - PrivateListNode mergehelper (listnode[] lists,intStartintend) { - if(Start >=end) { + returnLists[start]; - } + intMID = start + (End-start)/2; AListNode left =mergehelper (lists, start, mid); atListNode right = Mergehelper (lists, Mid + 1, end); - returnmerge (left, right); - } - - Privatelistnode Merge (ListNode list1, ListNode list2) { -ListNode dummy =NewListNode (0); inListNode tail =dummy; - while(List1! =NULL&& List2! =NULL) { to if(List1.val <list2.val) { +Tail.next =List1; -List1 =List1.next; theTail =Tail.next; *}Else { $Tail.next =List2;Panax NotoginsengList2 =List2.next; -Tail =Tail.next; the } + } A if(List1! =NULL) { theTail.next =List1; +}Else { -Tail.next =List2; $ } $ returnDummy.next; - } -}
Merge k Sorted Lists