Note:
同方向的指定不会撞
只有往右走的和往左走的可能会撞上,所以只考虑这个就可了
如果是往右走的,直接放到答案里面去
如果是往左走的,先把比他小的全从答案里T出去
如果相等,那就直接循环下一个
如果前面剩下的都是向左走的了,那么就直接进入答案里面
代码如下:
class Solution {
public:
vector<int> asteroidCollision(vector<int>& asteroids) {
vector<int> res;
for(auto x: asteroids){
if(x > 0) res.push_back(x);
else{
while(res.size() && res.back() > 0 && res.back() < -x) res.pop_back();
if(res.size() && res.back() == -x) res.pop_back();
else if(res.empty() || res.back() < 0) res.push_back(x);
}
}
return res;
}
};