Leetcode 735. Asteroid collision

topic

Insert image description here
Leetcode 735. Asteroid collision

Code (9.25 self-explanatory after first flash)

stack simulation

class Solution {
    
    
public:
    bool check(int a, int b) {
    
    
        if(a > 0 && b < 0)
            return true;
        return false;
    }
    vector<int> asteroidCollision(vector<int>& asteroids) {
    
    
        vector<int> ans;
        for(int& num :asteroids) {
    
    
            bool flag = true;
            while(!ans.empty() && check(ans.back(), num)) {
    
    
                if(abs(ans.back()>abs(num))) {
    
      // 比较小,被灭了
                flag = false;
                    break;
                } else if(abs(ans.back()<abs(num))) {
    
       // 继续撞击
                    ans.pop_back();
                } else {
    
        // boom!
                    ans.pop_back();
                    flag = false;
                    break;
                }
            }
            if(flag)
                ans.push_back(num);
        }
        return ans;
    }
};

Guess you like

Origin blog.csdn.net/weixin_51322383/article/details/133268317