链接:
链接: 735. 行星碰撞
问题描述,示例,和提示:
代码:
class Solution {
public:
vector<int> asteroidCollision(vector<int>& asteroids) {
vector<int> v;
for(auto &a: asteroids)
{
bool flag = true;
while(flag && a < 0 && !v.empty() && v.back()>0)
{
flag = v.back() < -a;
if(v.back() <= -a)
v.pop_back();
}
if(flag)
v.push_back(a);
}
return v;
}
};
题目解析:
设:
给定数组1
创建返回数组2
假定数组2末尾的数字是 正数
遍历数组1,
如果是正数直接放入即可,
如果是负数则需要进入判断一下,然后尾删数组2
问题:
如果数组1第一个数字是负数怎么办?
不影响,因为负数要向左边移动,正数向右边移动,二者不影响
总结:
数组2 的末尾为正数或者负数
正数:
遍历数组1,此时需要判断的星球是
1.正数–》直接插入
2.负数–》进入循环
负数:
遍历数组1,此时需要判断的星球是
1.正数–》直接插入
2.负数–》直接插入