Menu
CoddyTech

K Closest Points to Origin

Trung bìnhHeapSắp xếppython iconjava iconcpp iconc iconjs icon+10

Bạn có n điểm trên mặt phẳng: điểm i là (xs[i], ys[i]). Trả về k điểm gần gốc tọa độ (0, 0) nhất, mỗi điểm dưới dạng một cặp [x, y].

Sắp xếp câu trả lời theo khoảng cách đến gốc tọa độ, điểm gần nhất trước. Nếu các điểm cách đều nhau, hãy xếp điểm có x nhỏ hơn trước, sau đó đến điểm có y nhỏ hơn. Một điểm xuất hiện nhiều lần được tính một lần cho mỗi bản sao.

Hàm

kClosest(xs: integer-array, ys: integer-array, k: integer) → integer-2d-array
xsinteger-array
tọa độ x của mỗi điểm
ysinteger-array
tọa độ y của mỗi điểm
kinteger
cần trả về bao nhiêu điểm
Trả vềinteger-2d-array
các điểm gần nhất theo cặp [x, y], sắp xếp từ gần nhất trước, nếu bằng nhau thì theo x rồi đến y

Ràng buộc

  • n == xs.length == ys.length
  • 1 ≤ k ≤ n ≤ 5000
  • -104 ≤ xs[i], ys[i] ≤ 104
  • Các điểm có thể lặp lại; mỗi bản sao là một điểm riêng.

Ví dụ

Đầu vào
xs = [3, -1, 2, 0]ys = [1, 2, -2, 5]k = 2
Đầu ra
[[-1, 2], [2, -2]]
Giải thích
Các khoảng cách bình phương lần lượt là 10, 5, 8 và 25. Hai khoảng cách nhỏ nhất thuộc về (-1, 2) với giá trị 5 và (2, -2) với giá trị 8, theo thứ tự đó.
challenge icon

Câu hỏi mở rộng

Các điểm giờ đây lần lượt được đưa vào, và sau mỗi điểm, bạn phải báo cáo k điểm gần nhất tính đến lúc đó. Bạn cần bao nhiêu bộ nhớ?

Đặt lại code
def kClosest(xs, ys, k):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

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