Skip to content

Code:

js
import { ListNode, ArrayToLink, LinkToArray } from './common.js'

var mergeKLists = function(lists) {
    const merge = (list1, list2) => {
        const dummy = new ListNode()
        let current = dummy

        while(list1 && list2) {
            if (list1.val < list2.val) {
                current = current.next = list1
                list1 = list1.next
            } else {
                current = current.next = list2
                list2 = list2.next
            }
        }

        current.next = list1 || list2

        return dummy.next
    }


    const split = (left, right) => {
        if (left >= right) {
            return lists[left]
        }


        const middle = Math.floor((left + right) / 2)

        return merge(split(left, middle), split(middle + 1, right))
    }

    return split(0, lists.length)
};


console.log(LinkToArray(mergeKLists([].map(ArrayToLink))))

❤ With Algorithm