Menu
CoddyTech

Asteroid Collision

ŚrednieStospython iconjava iconcpp iconc iconjs icon+10

Rząd asteroid porusza się wzdłuż linii, wszystkie z taką samą prędkością. Każda wartość w asteroids opisuje jedną asteroidę: jej wartość bezwzględna oznacza jej rozmiar, a znak — kierunek, dodatni w prawo, a ujemny w lewo.

Gdy asteroida poruszająca się w prawo napotka asteroidę poruszającą się w lewo, zderzają się. Mniejsza eksploduje; jeśli mają ten sam rozmiar, eksplodują obie. Asteroidy poruszające się w tym samym kierunku nigdy się nie spotkają. Zwróć asteroidy, które pozostały po wszystkich zderzeniach, w ich pierwotnej kolejności. Wynik może być pusty.

Funkcja

asteroidCollision(asteroids: integer-array) → integer-array
asteroidsinteger-array
asteroidy od lewej do prawej, znak określa kierunek, wartość bezwzględna określa rozmiar
Zwracainteger-array
pozostałe asteroidy od lewej do prawej, być może żadne

Ograniczenia

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

Przykłady

Wejście
asteroids = [4, 9, -6, 2, -3]
Wyjście
[4, 9]
Wyjaśnienie
9 spotyka -6 i wygrywa. 2 spotyka -3 i eksploduje, a potem -3 leci dalej w stronę 9 i też eksploduje. Nic innego nie porusza się w stronę czegokolwiek, więc pozostają 4 i 9.
challenge icon

Pytanie dodatkowe

Stos określa, które asteroidy przetrwają. Jak można również podać dla każdej asteroidy, która eksploduje, indeks asteroidy, która ją zniszczyła?

Zresetuj kod
def asteroidCollision(asteroids):
    # Wpisz tutaj kod

Test #1

Test #2

Test #3

Argument

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

Oczekiwany wynik

[4, 9]