栈模拟
class Solution {
public:
bool check(int a, int b) {
if(a > 0 && b < 0)
return true;
return false;
}
vector<int> asteroidCollision(vector<int>& asteroids) {
vector<int> ans;
for(int& num :asteroids) {
bool flag = true;
while(!ans.empty() && check(ans.back(), num)) {
if(abs(ans.back()>abs(num))) { // 比较小,被灭了
flag = false;
break;
} else if(abs(ans.back()<abs(num))) { // 继续撞击
ans.pop_back();
} else { // boom!
ans.pop_back();
flag = false;
break;
}
}
if(flag)
ans.push_back(num);
}
return ans;
}
};