Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
Example:
Input:
[ 1->4->5, 1->3->4, 2->6 ]
Output:
1->1->2->3->4->4->5->6
Thoughts:
This is my accepted but not really efficient solution. (in the last 10% in CPU time and Mem Usage)
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode mergeKLists(ListNode[] lists) { ListNode cur = new ListNode(0); ListNode result = cur; while(!isAllEmpty(lists)){ int min = Integer.MAX_VALUE; int min_index = Integer.MAX_VALUE; int i = -1; for(ListNode l : lists){ i ++; if (l == null){ continue; } if(l.val < min){ min = l.val; min_index = i; } } cur.next = lists[min_index]; cur = cur.next; lists[min_index] = lists[min_index].next; } return result.next; } public boolean isAllEmpty(ListNode[] ln){ for(ListNode l : ln){ if(l != null){ return false; } } return true; } }