Menu
CoddyTech

Asteroid Collision

MittelStackpython iconjava iconcpp iconc iconjs icon+10

Eine Reihe von Asteroiden fliegt mit derselben Geschwindigkeit entlang einer Linie. Jeder Wert in asteroids beschreibt einen Asteroiden: Sein Absolutwert gibt seine Größe an, sein Vorzeichen seine Richtung, positiv für rechts und negativ für links.

Wenn ein Asteroid, der sich nach rechts bewegt, auf einen trifft, der sich nach links bewegt, stoßen sie zusammen. Der kleinere explodiert; sind sie gleich groß, explodieren beide. Asteroiden, die sich in dieselbe Richtung bewegen, treffen niemals aufeinander. Gib die Asteroiden zurück, die nach allen Zusammenstößen übrig bleiben, in ihrer ursprünglichen Reihenfolge. Das Ergebnis kann leer sein.

Funktion

asteroidCollision(asteroids: integer-array) → integer-array
asteroidsinteger-array
die Asteroiden von links nach rechts, Vorzeichen für die Richtung, Absolutwert für die Größe
Gibt zurückinteger-array
die verbliebenen Asteroiden von links nach rechts, möglicherweise keine

Einschränkungen

  • 1 ≤ asteroids.length ≤ 104
  • -1000 ≤ asteroids[i] ≤ 1000
  • asteroids[i] ≠ 0

Beispiele

Eingabe
asteroids = [4, 9, -6, 2, -3]
Ausgabe
[4, 9]
Erklärung
9 trifft auf -6 und gewinnt. 2 trifft auf -3 und explodiert, und dann fliegt -3 weiter auf 9 zu und explodiert ebenfalls. Nichts anderes bewegt sich auf etwas zu, also bleiben 4 und 9 übrig.
challenge icon

Weiterführende Frage

Der Stack liefert die Antwort darauf, welche Asteroiden überleben. Wie könntest du außerdem für jeden Asteroiden, der explodiert, den Index des Asteroiden angeben, der ihn zerstört hat?

Code zurücksetzen
def asteroidCollision(asteroids):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argument

asteroids = [4, 9, -6, 2, -3]

Erwartete Ausgabe

[4, 9]