Merge k Sorted Lists

Problem

You are given an array of k linked-lists lists, each linked-list is sorted in ascending order.

Merge all the linked-lists into one sorted linked-list and return it.

Example 1:

Input: lists = [[1,4,5],[1,3,4],[2,6]]
Output: [1,1,2,3,4,4,5,6]
Explanation: The linked-lists are:
[
  1->4->5,
  1->3->4,
  2->6
]
merging them into one sorted list:
1->1->2->3->4->4->5->6

Example 2:

Input: lists = []
Output: []

Example 3:

Input: lists = [[]]
Output: []

Constraints:

  • k == lists.length
  • 0 <= k <= 104
  • 0 <= lists[i].length <= 500
  • -104 <= lists[i][j] <= 104
  • lists[i] is sorted in ascending order.
  • The sum of lists[i].length will not exceed 104.

Solution

This is a heap problem.

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode mergeKLists(ListNode[] lists) {
        var q = new PriorityQueue<ListNode>((l, r) -> {
            return Integer.compare(l.val, r.val);
        });

        for (var l : lists) {
            if (l != null) {
                q.add(l);
            }
        }

        ListNode head = null;
        ListNode curr = null;
        while (!q.isEmpty()) {
            var t = q.poll();

            if (t.next != null) {
                q.add(t.next);
            }

            if (head == null) {
                head = t;
                curr = head;
                curr.next = null;
                continue;
            }

            curr.next = t;
            curr = t;
        }

        return head;
    }
}

Recent posts from blogs that I like

Advanced AI sycophancy

Everyone knows that AI sycophancy is when the model tells you how smart you are. Wow, you’re absolutely right. That’s not just a new idea — it’s genuinely groundbreaking. You’re a very special user. Easy to spot, isn’t it?

The discussion around AI sycophancy peaked last year, when the “#keep4o” move...

via Sean Goedecke

Painting legendary self-sacrifice: Did the Horatii save Rome?

Two sets of triplets fight outside the city of Rome acting as proxies for two warring cities. One survivor at the end demonstrates his loyalty by patriotic sacrifice. But which side was David on?

via The Eclectic Light Company

Now we have a timeline of the OpenAI accidental attack against Hugging Face

via Simon Willison