Menu
CoddyTech

K Closest Points to Origin

MittelHeapSortierenpython iconjava iconcpp iconc iconjs icon+10

Du erhältst n Punkte auf einer Ebene: Punkt i ist (xs[i], ys[i]). Gib die k Punkte zurück, die dem Ursprung (0, 0) am nächsten liegen, jeweils als Paar [x, y].

Ordne die Antwort nach der Entfernung vom Ursprung, beginnend mit dem nächstgelegenen Punkt. Punkte mit gleicher Entfernung werden zuerst nach dem kleineren x-Wert und dann nach dem kleineren y-Wert geordnet. Ein mehrfach aufgeführter Punkt zählt für jedes Vorkommen einmal.

Funktion

kClosest(xs: integer-array, ys: integer-array, k: integer) → integer-2d-array
xsinteger-array
die x-Koordinate jedes Punktes
ysinteger-array
die y-Koordinate jedes Punktes
kinteger
wie viele Punkte zurückgegeben werden
Gibt zurückinteger-2d-array
die k nächstgelegenen Punkte als [x, y]-Paare, vom nächsten zum fernsten, bei Gleichstand sortiert nach x und dann nach y

Einschränkungen

  • n == xs.length == ys.length
  • 1 ≤ k ≤ n ≤ 5000
  • -104 ≤ xs[i], ys[i] ≤ 104
  • Punkte können sich wiederholen; jede Kopie ist ein eigener Punkt.

Beispiele

Eingabe
xs = [3, -1, 2, 0]ys = [1, 2, -2, 5]k = 2
Ausgabe
[[-1, 2], [2, -2]]
Erklärung
Die quadrierten Abstände betragen 10, 5, 8 und 25. Die beiden kleinsten gehören zu (-1, 2) mit 5 und (2, -2) mit 8, in dieser Reihenfolge.
challenge icon

Weiterführende Frage

Die Punkte treffen nun einzeln ein, und nach jedem musst du die k bisher nächsten melden. Wie viel Speicher benötigst du?

Code zurücksetzen
def kClosest(xs, ys, k):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argumente

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

Erwartete Ausgabe

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