Menu
CoddyTech

K Closest Points to Origin

보통힙정렬python iconjava iconcpp iconc iconjs icon+10

평면에 n개의 점이 주어집니다. 점 i는 (xs[i], ys[i])입니다. 원점 (0, 0)에서 가장 가까운 k개의 점을 각각 쌍 [x, y] 형태로 반환하세요.

정답은 원점으로부터의 거리가 가까운 순서로 정렬하세요. 거리가 같으면 x가 더 작은 점을 먼저, 그다음 y가 더 작은 점을 먼저 배치하세요. 같은 점이 여러 번 나열되어 있으면 각 사본을 한 번씩 셉니다.

함수

kClosest(xs: integer-array, ys: integer-array, k: integer) → integer-2d-array
xsinteger-array
x좌표 각 점의
ysinteger-array
각 점의 y 좌표
kinteger
반환할 점수는 몇 점인가요?
반환값integer-2d-array
x, y 쌍으로 표시한 가장 가까운 k개의 점을 가까운 순서대로 반환하며, 거리가 같으면 x, 그다음 y를 기준으로 정렬합니다.

제약 조건

  • n == xs.length == ys.length
  • 1 ≤ k ≤ n ≤ 5000
  • -104 ≤ xs[i], ys[i] ≤ 104
  • 항목은 반복될 수 있으며, 각 복사본은 별도의 항목입니다.

예제

입력
xs = [3, -1, 2, 0]ys = [1, 2, -2, 5]k = 2
출력
[[-1, 2], [2, -2]]
설명
제곱 거리는 10, 5, 8, 25입니다. 가장 작은 두 값은 순서대로 5인 (-1, 2)와 8인 (2, -2)에 해당합니다.
challenge icon

후속 질문

이제 점들이 한 번에 하나씩 도착하며, 점이 하나 도착할 때마다 지금까지의 점 중 가장 가까운 k개를 보고해야 합니다. 메모리가 얼마나 필요할까요?

코드 초기화
def kClosest(xs, ys, k):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

xs = [3, -1, 2, 0]
ys = [1, 2, -2, 5]
k = 2

예상 출력

[[-1, 2], [2, -2]]