Menu
CoddyTech

K Closest Points to Origin

Tienes n puntos en un plano: el punto i es (xs[i], ys[i]). Devuelve los k puntos más cercanos al origen (0, 0), cada uno como un par [x, y].

Ordena la respuesta por distancia al origen, primero el más cercano. Si varios puntos están a la misma distancia, ordénalos primero por x menor y luego por y menor. Un punto listado más de una vez cuenta una vez por cada aparición.

Función

kClosest(xs: integer-array, ys: integer-array, k: integer) → integer-2d-array
xsinteger-array
la coordenada x de cada punto
ysinteger-array
la coordenada y de cada punto
kinteger
cuántos puntos devolver
Devuelveinteger-2d-array
los k puntos más cercanos como pares [x, y], ordenados de más cercano a más lejano; en caso de empate, por x y luego por y

Restricciones

  • n == xs.length == ys.length
  • 1 ≤ k ≤ n ≤ 5000
  • -104 ≤ xs[i], ys[i] ≤ 104
  • Los puntos pueden repetirse; cada copia es un punto independiente.

Ejemplos

Entrada
xs = [3, -1, 2, 0]ys = [1, 2, -2, 5]k = 2
Salida
[[-1, 2], [2, -2]]
Explicación
Las distancias al cuadrado son 10, 5, 8 y 25. Las dos más pequeñas corresponden a (-1, 2) con 5 y a (2, -2) con 8, en ese orden.
challenge icon

Para ir más allá

Ahora los puntos llegan de uno en uno, y después de cada uno debes indicar los k más cercanos hasta ese momento. ¿Cuánta memoria necesitas?

Restablecer código
def kClosest(xs, ys, k):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumentos

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

Salida Esperada

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