Menu
CoddyTech

K Closest Points to Origin

Hai n punti su un piano: il punto i è (xs[i], ys[i]). Restituisci i k punti più vicini all’origine (0, 0), ciascuno come coppia [x, y].

Ordina la risposta in base alla distanza dall’origine, dal più vicino al più lontano. I punti alla stessa distanza vanno ordinati prima per x crescente, poi per y crescente. Un punto elencato più di una volta conta una volta per ogni occorrenza.

Funzione

kClosest(xs: integer-array, ys: integer-array, k: integer) → integer-2d-array
xsinteger-array
la coordinata x di ogni punto
ysinteger-array
la coordinata y di ogni punto
kinteger
quanti punti restituire
Restituisceinteger-2d-array
i k punti più vicini come coppie [x, y], dal più vicino al più lontano, a parità di distanza ordinati prima per x e poi per y

Vincoli

  • n == xs.length == ys.length
  • 1 ≤ k ≤ n ≤ 5000
  • -104 ≤ xs[i], ys[i] ≤ 104
  • I punti possono ripetersi; ogni copia è un punto separato.

Esempi

Input
xs = [3, -1, 2, 0]ys = [1, 2, -2, 5]k = 2
Output
[[-1, 2], [2, -2]]
Spiegazione
Le distanze al quadrato sono 10, 5, 8 e 25. Le due più piccole appartengono a (-1, 2) con 5 e a (2, -2) con 8, in quest’ordine.
challenge icon

Per approfondire

I punti arrivano ora uno alla volta e, dopo ciascuno, devi indicare i k più vicini trovati finora. Quanta memoria ti serve?

Ripristina il codice
def kClosest(xs, ys, k):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

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

Output atteso

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