Leetcode算法题601-700


601-610

611-620

621-630

631-640

641-650

651-660

661-670

671-680

681-690

682. 棒球比赛

class Solution {
public:
    int calPoints(vector <string> &ops) {
        vector<int> res;
        for (auto op: ops) {
            // 前一次得分无效
            if (op == "C") {
                res.pop_back();
            }
                // 本回合新获得的得分是前一次得分的两倍
            else if (op == "D") {
                res.push_back(res.back() * 2);
            }
                // 本回合新获得的得分是前两次得分的总和
            else if (op == "+") {
                res.push_back(res[res.size() - 1] + res[res.size() - 2]);
            } else {
                res.push_back(stoi(op));
            }
        }
        int ans = 0;
        for (auto it: res) ans += it;
        return ans;
    }
};

691-700

693. 交替位二进制数

相邻两位不同,可以通过二进制11去检测,如果是00或者11则会与运算出00或11,即0或3。

class Solution {
public:
    bool hasAlternatingBits(int n) {
        while (n) {
            if ((n & 3) == 3 || (n & 3) == 0) {
                return false;
            }
            n >>= 1;
        }
        return true;
    }
};

文章作者: 不二
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 不二 !
  目录