class Solution {
public:
vector<int> asteroidCollision(vector<int>& asteroids)
{
vector<int> res;
stack<int> s;
stack<int> temp;
for(int i = 0;i < asteroids.size();i++)
{
if(asteroids[i] < 0 && s.empty())
{
res.push_back(asteroids[i]);
continue;
}
else
{
if(asteroids[i] > 0)
{
s.push(asteroids[i]);
}
else
{
while(!s.empty())
{
if(s.top() + asteroids[i] > 0)
{
break;
}
else if(s.top() + asteroids[i] == 0)
{
s.pop();
break;
}
else
{
s.pop();
if(s.empty())
{
res.push_back(asteroids[i]);
}
}
}
}
}
}
while(!s.empty())
{
temp.push(s.top());
s.pop();
}
while(!temp.empty())
{
res.push_back(temp.top());
temp.pop();
}
return res;
}
};