这道题当遇到正数时,直接入栈;遇到负数时,若栈为空或者栈顶是负数,则入栈,否则比较当前负数值的相反数与栈顶正数的大小,胜者生存。
class Solution(object):
def asteroidCollision(self, asteroids):
"""
:type asteroids: List[int]
:rtype: List[int]
"""
"""
当遇到正数时,直接入栈;
遇到负数时,若栈为空或者栈顶是负数,则入栈,
否则比较当前负数值的相反数与栈顶正数的大小,胜者生存。
"""
stack=[]
for i in asteroids:
if i>0:
stack.append(i)
elif i<=0:
while len(stack)>0 and stack[-1]>0:
if stack[-1]<-i:
stack.pop()
elif stack[-1]==-i:
stack.pop()
break
else:
break
else:
stack.append(i)
return stack