From 4c3b5b0f0660d1e0fbee6b51fce383f4b59b56c1 Mon Sep 17 00:00:00 2001 From: dhanoosh Date: Fri, 14 Apr 2023 21:15:07 -0700 Subject: [PATCH] Modified: 23-merge-k-sorted-lists.java --- java/0023-merge-k-sorted-lists.java | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/java/0023-merge-k-sorted-lists.java b/java/0023-merge-k-sorted-lists.java index 11a5fd4d5..699ad0a1e 100644 --- a/java/0023-merge-k-sorted-lists.java +++ b/java/0023-merge-k-sorted-lists.java @@ -5,22 +5,28 @@ class Solution1 { public ListNode mergeKLists(ListNode[] lists) { - Queue minHeap = new PriorityQueue<>(); + if (lists == null || lists.length == 0) { + return null; + } - for (ListNode nodes : lists) { - ListNode current = nodes; - while (current != null) { - minHeap.add(current.val); - current = current.next; + PriorityQueue queue = new PriorityQueue<>((a, b) -> a.val - b.val); + for (ListNode node : lists) { + if (node != null) { + queue.offer(node); } } ListNode dummy = new ListNode(0); ListNode current = dummy; - while (!minHeap.isEmpty()) { - current.next = new ListNode(minHeap.poll()); + while (!queue.isEmpty()) { + ListNode node = queue.poll(); + current.next = node; current = current.next; + + if (node.next != null) { + queue.offer(node.next); + } } return dummy.next;