class Solution { public: vector asteroidCollision(vector& asteroids) { int n = asteroids.size(); vector res; for(int i = 0; i < n; ++i) { if(asteroids[i] < 0) //move to the left, possibly collide to the left asteroid { while(!res.empty() && res.back() > 0 && res.back() + asteroids[i] < 0) res.pop_back(); if(res.empty() || res.back() < 0) res.push_back(asteroids[i]); else if(res.back() + asteroids[i] == 0) res.pop_back(); } else res.push_back(asteroids[i]); } return res; } };