Leetcode算法题601-700


601-610

611-620

621-630

631-640

641-650

651-660

661-670

671-680

681-690

682. 棒球比赛

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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。

1
2
3
4
5
6
7
8
9
10
11
12
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 许可协议。转载请注明来源 不二 !
  目录