Menu
CoddyTech

K Closest Points to Origin

Düzlemde n noktanız var: i. nokta (xs[i], ys[i]) şeklindedir. Orijine (0, 0) en yakın k noktayı, her birini [x, y] çifti olarak döndürün.

Yanıtı orijine olan uzaklığa göre, en yakından başlayarak sıralayın. Aynı uzaklıktaki noktalar önce daha küçük x değerine, ardından daha küçük y değerine göre sıralanır. Bir nokta birden fazla kez listelenmişse, her kopya bir kez sayılır.

Fonksiyon

kClosest(xs: integer-array, ys: integer-array, k: integer) → integer-2d-array
xsinteger-array
x koordinatı her noktanın
ysinteger-array
her noktanın y koordinatı
kinteger
kaç puan döndürülmeli
Döndürürinteger-2d-array
En yakından başlayarak, eşitliklerde önce x, sonra y değerine göre sıralanmış [x, y] çiftleri olarak k en yakın nokta

Kısıtlar

  • n == xs.length == ys.length
  • 1 ≤ k ≤ n ≤ 5000
  • -104 ≤ xs[i], ys[i] ≤ 104
  • Noktalar tekrarlanabilir; her kopya ayrı bir noktadır.

Örnekler

Girdi
xs = [3, -1, 2, 0]ys = [1, 2, -2, 5]k = 2
Çıktı
[[-1, 2], [2, -2]]
Açıklama
Kareleri alınmış uzaklıklar 10, 5, 8 ve 25'tir. En küçük iki değer, sırasıyla 5 ile (-1, 2) noktasına ve 8 ile (2, -2) noktasına aittir.
challenge icon

Ek soru

Noktalar artık teker teker geliyor ve her birinden sonra, şimdiye kadar gelenler arasından en yakın k noktayı bildirmelisiniz. Ne kadar belleğe ihtiyacınız var?

Kodu sıfırla
def kClosest(xs, ys, k):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argümanlar

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

Beklenen Çıktı

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