Using JAVA stream parallel BinaryOperator, but the BinaryOperator is a recursive algorithm, which wastes too much time


  • 0
    F
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if (l1 == null)
            return l2;
        if (l2 == null)
            return l1;
        if (l1.val < l2.val) {
            l1.next = mergeTwoLists(l1.next, l2);
            return l1;
        }
        l2.next = mergeTwoLists(l1, l2.next);
        return l2;
    }
    
    public ListNode mergeKLists(ListNode[] lists) {
        return Arrays.stream(lists).parallel().filter(l -> l != null).reduce((l1, l2) -> mergeTwoLists(l1, l2)).orElse(null);
    }

Log in to reply
 

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