概述
第一版,没有想到相向移动不会被撞
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 Leetcode 735.行星碰撞所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复