def find_remaining_planets(planets):
stack = [] # 创建一个空栈
for planet in planets:
# 处理每个行星
while stack and planet * stack[-1] < 0:
# 检查栈顶行星是否与当前行星碰撞
if abs(stack[-1]) < planet: # 当前行星比栈顶行星大
stack.pop() # 爆炸栈顶行星
continue # 继续检查新的栈顶
elif abs(stack[-1]) == planet: # 大小相同
stack.pop() # 爆炸栈顶行星
break # 当前行星爆炸
else: # 栈顶行星更大
break # 当前行星爆炸,退出
else:
# 如果没有碰撞,或者栈为空,将行星加入栈中
stack.append(planet)
return stack # 返回剩余的行星
# 示例输出
print(find_remaining_planets([-5,-5,10,5])) # 输出: [10,5]
print(find_remaining_planets([-8, 8])) # 输出: []
标签:栈顶,碰撞,find,planet,planets,行星,stack
From: https://blog.csdn.net/weixin_43837522/article/details/144591902