Menu
CoddyTech

K Closest Points to Origin

Você recebe n pontos em um plano: o ponto i é (xs[i], ys[i]). Retorne os k pontos mais próximos da origem (0, 0), cada um como um par [x, y].

Ordene a resposta pela distância da origem, do mais próximo ao mais distante. Pontos à mesma distância vêm primeiro pelo menor x, depois pelo menor y. Um ponto listado mais de uma vez conta uma vez por cópia.

Função

kClosest(xs: integer-array, ys: integer-array, k: integer) → integer-2d-array
xsinteger-array
a coordenada x de cada ponto
ysinteger-array
a coordenada y de cada ponto
kinteger
quantos pontos retornar
Retornainteger-2d-array
os k pontos mais próximos como pares [x, y], em ordem do mais próximo, com os empates desfeitos por x e depois por y

Restrições

  • n == xs.length == ys.length
  • 1 ≤ k ≤ n ≤ 5000
  • -104 ≤ xs[i], ys[i] ≤ 104
  • Os pontos podem se repetir; cada ocorrência é um ponto separado.

Exemplos

Entrada
xs = [3, -1, 2, 0]ys = [1, 2, -2, 5]k = 2
Saída
[[-1, 2], [2, -2]]
Explicação
As distâncias ao quadrado são 10, 5, 8 e 25. As duas menores pertencem a (-1, 2), com 5, e a (2, -2), com 8, nessa ordem.
challenge icon

Para ir além

Os pontos agora chegam um de cada vez, e após cada um você deve informar os k mais próximos até então. De quanta memória você precisa?

Redefinir código
def kClosest(xs, ys, k):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumentos

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

Saída Esperada

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