Merge k Sorted Lists
Input:
[
1->4->5,
1->3->4,
2->6
]
Output: 1->1->2->3->4->4->5->6Last updated
Input:
[
1->4->5,
1->3->4,
2->6
]
Output: 1->1->2->3->4->4->5->6Last updated
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeKLists(ListNode[] lists) {
if(lists.length == 0 || lists == null){
return null;
}
return mergeHelper(lists,0,lists.length -1);
}
public ListNode mergeHelper(ListNode[] lists,int start, int end){
if(start == end){
return lists[start];
}
int mid = start + (end - start )/2;
ListNode left = mergeHelper(lists, start,mid);
ListNode right = mergeHelper(lists,mid+1,end);
return mergeTwoList(left,right);
}
public ListNode mergeTwoList(ListNode list1,ListNode list2){
ListNode dummy = new ListNode(0);
ListNode tail = dummy;
while(list1 != null && list2 != null){
if(list1.val < list2.val){
tail.next = list1;
tail = list1;
list1 = list1.next;
}else{
tail.next = list2;
tail = list2;
list2 = list2.next;
}
}
if(list1 != null){
tail.next = list1;
}else{
tail.next = list2;
}
return dummy.next;
}
}