Leetcode Java K Closest Points to Origin
업데이트:
문제
코드
class Solution {
public int[][] kClosest(int[][] points, int k) {
Queue<int[]> queue = new PriorityQueue<>((a, b) -> ((a[0] * a[0]) + (a[1] * a[1])) - ((b[0] * b[0]) + (b[1] * b[1])));
int[][] result = new int[k][2];
for (int[] point : points) {
queue.add(point);
}
for (int i = 0; i < k; i++) {
result[i] = queue.poll();
}
return result;
}
}
결과
설명
-
(0, 0) 좌표에서 가장 가까운 k개의 points를 반환하는 문제이다.
- 문제 풀이에 필요한 변수를 정의한다.
- queue는 좌표의 거리를 저장할 변수로, PriorityQueue로 거리에 대한 오름차순으로 정렬하여 points의 모든 좌표값을 저장한다.
- 길이의 비교는 제곱근을 수행하지 않아도 알 수 있으므로 제곱근을 수행하지 않은 값으로 비교한다.
- result는 k개의 좌표를 저장할 변수로, $k \times 2$ 크기의 배열로 초기화한다.
- queue는 좌표의 거리를 저장할 변수로, PriorityQueue로 거리에 대한 오름차순으로 정렬하여 points의 모든 좌표값을 저장한다.
- 0부터 k까지 queue의 좌표를 result에 넣어주고 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기