000735-Asteroid-Collision
Problem
Solution
class Solution:
def asteroidCollision(self, asteroids: List[int]) -> List[int]:
if not asteroids:
return []
stack = []
for ast in asteroids:
while stack and stack[-1] > 0 and ast < 0:
diff = stack[-1] + ast
# move right > left, keep right, discard left
if diff > 0:
ast = 0
# move right < left, keep left, discard right, pop stack
elif diff < 0:
stack.pop()
else: # move right == left, discard both
ast = 0
stack.pop()
# only when asteroid not 0, add into stack
if ast != 0:
stack.append(ast)
return stack
Last updated