Leetcode 735. 小行星碰撞

文章目录

  • 题目
  • 代码(9.25 首刷自解)

题目

Leetcode 735. 小行星碰撞_第1张图片
Leetcode 735. 小行星碰撞

代码(9.25 首刷自解)

栈模拟

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;
    }
};

你可能感兴趣的:(Leetcode专栏,leetcode,算法,职场和发展)