Menu
CoddyTech

Asteroid Collision

ふつうスタックpython iconjava iconcpp iconc iconjs icon+10

小惑星の列が、すべて同じ速度で一直線に進んでいます。asteroids の各値は1つの小惑星を表します。絶対値は大きさを、符号は進行方向を示し、正の値は右、負の値は左を表します。

右に進む小惑星が左に進む小惑星と出会うと、衝突します。小さい方は爆発し、同じ大きさなら両方とも爆発します。同じ方向に進む小惑星同士が出会うことはありません。すべての衝突の後に残った小惑星を、元の順序で返してください。結果は空の場合もあります。

関数

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]