Asteroid Collision LeetCode solution in C++

1
class Solution {
2
public:
3
vector<int> asteroidCollision(vector<int> &asteroids) {
4
vector<int> v;
5
stack<int> s;
6

7
for (auto x : asteroids) {
8
if (x > 0)
9
s.push(x);
10

11
else {
12
// Case 1: whem top is less than x
13

14
while (s.size() > 0 && s.top() > 0 && s.top() < -x) {
15
s.pop();
16
}
17

18
// case 2 : when both of same size
19
if (s.size() > 0 && s.top() == -x) {
20
s.pop();
21
}
22

23
// case 3: when top is greater
24

25
else if (s.size() > 0 && s.top() > -x) {
26
// do nothing
27
}
28

29
// case 4: when same direction
30

31
else {
32
s.push(x);
33
}
34
}
35
}
36

37
while (!s.empty()) {
38
v.push_back(s.top());
39
s.pop();
40
}
41

42
reverse(v.begin(), v.end());
43

44
return v;
45
}
46
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0