第一版,没有想到相向移动不会被撞
class Solution {
public:
vector<int> asteroidCollision(vector<int>& asteroids) {
vector<int> ret;
if(asteroids.empty())
return ret;
// ret.push_back(asteroids[0]);
for(auto & i : asteroids){
bool add = true;
while(!ret.empty() && ret.back()*i < 0){
if(abs(ret.back()) == abs(i)){
ret.pop_back();
add = false;
break;
//两败俱伤
}else if(abs(ret.back()) < abs(i)){
ret.pop_back();
continue;
//i还可以继续撞
}else if(abs(ret.back()) > abs(i)){
add = false;
break;
}
}
if(add)
ret.push_back(i);
}
return ret;
}
};
第二版,其实第一版大体思路没错,就是只有第一个向右,第二个向左这种情况会发生碰撞,其他都不会,要注意到这一点。
class Solution {
public:
vector<int> asteroidCollision(vector<int>& asteroids) {
vector<int> ret;
if(asteroids.empty())
return ret;
for(auto &i:asteroids){
// if(ret.empty() || (ret.back() < 0 && i > 0) || (ret.back()*i > 0)){
// ret.push_back(i);
// }
bool add = true;
while(!ret.empty() && ret.back() > 0 && i < 0){
if(abs(ret.back()) > abs(i)){
add = false;
break;
}else if(abs(ret.back()) == abs(i)){
add = false;
ret.pop_back();
break;
}else if(abs(ret.back()) < abs(i)){
ret.pop_back();
continue;
}
}
if(add)
ret.push_back(i);
}
return ret;
}
};
最后
以上就是秀丽西装最近收集整理的关于2022-4-7 Leetcode 735.行星碰撞的全部内容,更多相关2022-4-7内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复