Java-4ms-20lines-RecursionIsOurFriend


  • 0
    J
        public ListNode mergeKLists(ListNode[] lists) {
            if(lists==null||lists.length==0) return null;
            int k = lists.length;
            return split(lists,0,k-1);
        }
        public ListNode split(ListNode[] lists,int left,int right){
            if(left==right) return lists[left];
            int m = (left+right)/2;
            return mergeSort(split(lists,left,m),split(lists,m+1,right));
        }
        public ListNode mergeSort(ListNode l1,ListNode l2){
            if(l1==null) return l2;
            if(l2==null) return l1;
            if(l1.val<l2.val){
                l1.next = mergeSort(l1.next,l2);
                return l1;
            } else {
                l2.next = mergeSort(l1,l2.next);
                return l2;
            }
        }

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.