Menu
CoddyTech

K Closest Points to Origin

MoyenTasTripython iconjava iconcpp iconc iconjs icon+10

Vous avez n points dans un plan : le point i est (xs[i], ys[i]). Renvoyez les k points les plus proches de l’origine (0, 0), chacun sous la forme d’une paire [x, y].

Ordonnez la réponse par distance à l’origine, du plus proche au plus éloigné. Pour les points à la même distance, placez d’abord celui dont x est le plus petit, puis celui dont y est le plus petit. Un point répertorié plusieurs fois compte une fois par occurrence.

Fonction

kClosest(xs: integer-array, ys: integer-array, k: integer) → integer-2d-array
xsinteger-array
la coordonnée x de chaque point
ysinteger-array
la coordonnée y de chaque point
kinteger
combien de points renvoyer
Renvoieinteger-2d-array
les k points les plus proches sous forme de paires [x, y], du plus proche au plus éloigné, les ex æquo étant départagés selon x puis y

Contraintes

  • n == xs.length == ys.length
  • 1 ≤ k ≤ n ≤ 5000
  • -104 ≤ xs[i], ys[i] ≤ 104
  • Les points peuvent se répéter ; chaque occurrence constitue un point distinct.

Exemples

Entrée
xs = [3, -1, 2, 0]ys = [1, 2, -2, 5]k = 2
Sortie
[[-1, 2], [2, -2]]
Explication
Les distances au carré sont 10, 5, 8 et 25. Les deux plus petites correspondent à (-1, 2) avec 5 et à (2, -2) avec 8, dans cet ordre.
challenge icon

Pour aller plus loin

Les points arrivent désormais un à la fois, et après chacun d’eux, vous devez indiquer les k plus proches jusqu’à présent. De combien de mémoire avez-vous besoin ?

Réinitialiser le code
def kClosest(xs, ys, k):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Arguments

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

Résultat attendu

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