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]