Menu
CoddyTech

K Closest Points to Origin

Kamu mendapatkan n titik pada bidang: titik i adalah (xs[i], ys[i]). Kembalikan k titik yang paling dekat dengan titik asal (0, 0), masing-masing sebagai pasangan [x, y].

Urutkan jawaban berdasarkan jarak dari titik asal, mulai dari yang terdekat. Untuk titik dengan jarak yang sama, dahulukan titik dengan x yang lebih kecil, lalu titik dengan y yang lebih kecil. Titik yang tercantum lebih dari sekali dihitung satu kali untuk setiap salinannya.

Fungsi

kClosest(xs: integer-array, ys: integer-array, k: integer) → integer-2d-array
xsinteger-array
koordinat x dari setiap titik
ysinteger-array
koordinat y setiap titik
kinteger
berapa banyak poin yang harus dikembalikan
Mengembalikaninteger-2d-array
k titik terdekat dalam bentuk pasangan [x, y], diurutkan dari yang paling dekat, jika jaraknya sama urutkan berdasarkan x lalu y

Batasan

  • n == xs.length == ys.length
  • 1 ≤ k ≤ n ≤ 5000
  • -104 ≤ xs[i], ys[i] ≤ 104
  • Poin dapat berulang; setiap salinannya merupakan poin terpisah.

Contoh

Input
xs = [3, -1, 2, 0]ys = [1, 2, -2, 5]k = 2
Output
[[-1, 2], [2, -2]]
Penjelasan
Jarak kuadratnya adalah 10, 5, 8, dan 25. Dua jarak terkecil adalah milik (-1, 2) dengan nilai 5 dan (2, -2) dengan nilai 8, dalam urutan tersebut.
challenge icon

Pertanyaan lanjutan

Titik-titik kini datang satu per satu, dan setelah setiap titik kamu harus melaporkan k titik terdekat sejauh ini. Berapa banyak memori yang kamu butuhkan?

Reset kode
def kClosest(xs, ys, k):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

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