文章目录
2660. 保龄球游戏的获胜者
难度: 简单
题目大意:
给你两个下标从 0 开始的整数数组
player1
和player2
,分别表示玩家 1 和玩家 2 击中的瓶数。保龄球比赛由
n
轮组成,每轮的瓶数恰好为10
。假设玩家在第
i
轮中击中xi
个瓶子。玩家第i
轮的价值为:
- 如果玩家在该轮的前两轮的任何一轮中击中了
10
个瓶子,则为2xi
。- 否则,为
xi
。玩家的得分是其
n
轮价值的总和。返回
如果玩家 1 的得分高于玩家 2 的得分,则为
1
;如果玩家 2 的得分高于玩家 1 的得分,则为
2
;如果平局,则为
0
。提示:
n == player1.length == player2.length
1 <= n <= 1000
0 <= player1[i], player2[i] <= 10
模拟
直接按照题目说的意思来模拟一遍就行
代码实现
class Solution {
public:
int isWinner(vector<int>& player1, vector<int>& player2) {
auto get = [&](vector<int>& g) -> int {
int n = g.size();
int res = 0;
for (int i = 0; i < n; i ++) {
res += g[i];
if ((i - 1 >= 0 && g[i - 1] == 10) || (i - 2 >= 0 && g[i - 2] == 10))
res += g[i];
}
return res;
};
int a = get(player1), b = get(player2);
return (a < b) + (a != b); // 小技巧
}
};
时间复杂度: O ( n ) O(n) O(n)
总结
- 很简单, 模拟题, 涉及一些实现的小技巧
结束了