Menu
CoddyTech

Asteroid Collision

СреднеСтекpython iconjava iconcpp iconc iconjs icon+10

Ряд астероидов движется вдоль линии с одинаковой скоростью. Каждое значение в asteroids описывает один астероид: его абсолютное значение — это его размер, а знак указывает направление: положительный — вправо, отрицательный — влево.

Когда астероид, движущийся вправо, встречается с астероидом, движущимся влево, они сталкиваются. Меньший взрывается; если они одинакового размера, взрываются оба. Астероиды, движущиеся в одном направлении, никогда не встречаются. Верни астероиды, которые остались после всех столкновений, в исходном порядке. Результат может быть пустым.

Функция

asteroidCollision(asteroids: integer-array) → integer-array
asteroidsinteger-array
астероиды слева направо, знак для направления, абсолютное значение для размера
Возвращаетinteger-array
оставшиеся астероиды слева направо, возможно, ни одного

Ограничения

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

Примеры

Ввод
asteroids = [4, 9, -6, 2, -3]
Вывод
[4, 9]
Пояснение
9 встречает -6 и побеждает. 2 встречает -3 и взрывается, а затем -3 летит дальше к 9 и тоже взрывается. Больше ничто ни к чему не движется, поэтому остаются 4 и 9.
challenge icon

Дополнительный вопрос

Стек определяет, какие астероиды выживут. Как дополнительно сообщать для каждого взорвавшегося астероида индекс астероида, который его уничтожил?

Сбросить код
def asteroidCollision(asteroids):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

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

Ожидаемый вывод

[4, 9]