File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ * @lc app=leetcode.cn id=735 lang=golang
3
+ *
4
+ * [735] 行星碰撞
5
+ */
6
+ // 12 ms, faster than 84.00%
7
+ // [-2,-2,1,-2]
8
+ // [8, -8]
9
+ // stack 模拟
10
+ func asteroidCollision (asteroids []int ) []int {
11
+ // 只有负数才有可能碰撞
12
+ stack := make ([]int , 0 , len (asteroids ))
13
+
14
+ for _ , v := range asteroids {
15
+ if v > 0 || len (stack ) == 0 || stack [len (stack )- 1 ] < 0 {
16
+ stack = append (stack , v )
17
+ } else {
18
+ for {
19
+ if len (stack ) == 0 {
20
+ stack = append (stack , v )
21
+ break
22
+ } else {
23
+ top := stack [len (stack )- 1 ]
24
+ if top < 0 {
25
+ stack = append (stack , v )
26
+ break // 同方向,退出
27
+ } else if top + v == 0 {
28
+ stack = stack [:len (stack )- 1 ] // pop
29
+ break
30
+ } else if top + v > 0 {
31
+ break
32
+ } else if top + v < 0 {
33
+ stack = stack [:len (stack )- 1 ] //pop
34
+ }
35
+ }
36
+ }
37
+ }
38
+ }
39
+ return stack
40
+ }
You can’t perform that action at this time.
0 commit comments