
K Closest Points to Origin - LeetCode
class Solution {
public int[][] kClosest(int[][] points, int k) {
PriorityQueue<int[]> pq = new PriorityQueue<>((o1, o2) -> {
if (getDistance(o1) > getDistance(o2)) return 1;
else if (getDistance(o1) == getDistance(o2)) return 0;
else return -1;
});
for (int[] point : points) {
pq.add(point);
}
int[][] result = new int[k][2];
for (int i = 0; i < k; i++) {
result[i] = pq.poll();
}
return result;
}
public int getDistance(int[] point) {
return point[0] * point[0] + point[1] * point[1];
}
}
# ```
- Priority Queue와 Comparable 인터페이스를 구현하는 방식을 통해 해결하였다.
- 원점으로부터 거리를 기준으로 정렬하여 k개 만큼 뽑아서 반환하였다.
