From 554f53e4cc2d59a8f508964a77e679b3cc9ed36e Mon Sep 17 00:00:00 2001 From: Arnab Das <93949960+Arnab7456@users.noreply.github.com> Date: Thu, 16 Jan 2025 13:55:17 +0530 Subject: [PATCH] Integer Overflow in Max Heap Comparator for K Closest Points to Origin The current implementation can potentially cause overflow when the distances are large. issue solve Id: #21 --- patterns/java/TopKElements.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/patterns/java/TopKElements.java b/patterns/java/TopKElements.java index c84c391..15946b1 100644 --- a/patterns/java/TopKElements.java +++ b/patterns/java/TopKElements.java @@ -126,7 +126,9 @@ private int getDistance(int[] point) { public int[][] kClosestPointsToOriginMaxHeapApproach(int[][] points, int k) { // Max heap with custom comparator to compare by distance - PriorityQueue maxHeap = new PriorityQueue<>((a, b) -> getDistance(b) - getDistance(a)); + PriorityQueue maxHeap = new PriorityQueue<>( + (a, b) -> Integer.compare(getDistance(b), getDistance(a)) + ); // Iterate through all points for (int[] point : points) { @@ -146,4 +148,4 @@ public int[][] kClosestPointsToOriginMaxHeapApproach(int[][] points, int k) { return result; } -} \ No newline at end of file +}