package array.iterative;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
public class KClosestPointsToOrigin {
public int[][] kClosest(int[][] points, int k) {
Queue<int[]> queue = new PriorityQueue<>(
Comparator.comparingDouble(KClosestPointsToOrigin::euclideanDistance).reversed()
);
for (var point : points) {
queue.add(point);
if (queue.size() > k)
queue.remove();
}
return queue.toArray(int[][]::new);
}
private static double euclideanDistance(int[] point) {
int x = point[0], y = point[1];
return (x * x) + (y * y);
}
}