Posted on 2023-07-20 16:01
Uriel 阅读(26)
评论(0) 编辑 收藏 引用 所属分类:
模拟 、
数据结构 、
闲来无事重切Leet Code
给出一列数,负数代表向左移动,正数代表向右移动,如果连着的两个数分别向右和向左,则会碰撞,只剩下绝对值更大的那一个数,问所有碰撞结束之后剩下的list
基本栈操作
1 #735
2 #Runtime: 98 ms (Beats 14.98%)
3 #Memory: 14.6 MB (Beats 16.21%)
4
5 class Solution(object):
6 def asteroidCollision(self, asteroids):
7 """
8 :type asteroids: List[int]
9 :rtype: List[int]
10 """
11 stk = [asteroids[0]]
12 for x in asteroids[1:]:
13 stk.append(x)
14 while len(stk) > 1 and stk[-2] > 0 and stk[-1] < 0:
15 pre1 = stk[-1]
16 pre2 = stk[-2]
17 stk.pop()
18 stk.pop()
19 if abs(pre1) != abs(pre2):
20 stk.append(pre1) if abs(pre1) > abs(pre2) else stk.append(pre2)
21 return stk