题目
给你两个下标从 0 开始的整数数组
player1
和player2
,分别表示玩家 1 和玩家 2 击中的瓶数。保龄球比赛由
n
轮组成,每轮的瓶数恰好为10
。假设玩家在第
i
轮中击中xi
个瓶子。玩家第i
轮的价值为:
- 如果玩家在该轮的前两轮的任何一轮中击中了
10
个瓶子,则为2xi
。- 否则,为
xi
。玩家的得分是其
n
轮价值的总和。返回
- 如果玩家 1 的得分高于玩家 2 的得分,则为
1
;- 如果玩家 2 的得分高于玩家 1 的得分,则为
2
;- 如果平局,则为
0
。
解题思路
- 通过List存储上两个数据;
- 遍历player1统计玩家一的分数;
- 遍历player2统计玩家二的分数;
- 两者相减,大于0返回1,小于0返回2,等于0返回0;
代码展示
class Solution {public int isWinner(int[] player1, int[] player2) {List<Integer> data = new ArrayList<>();int sum = 0;for(int num : player1){if(data.contains(10)){sum += num * 2;} else {sum += num;}if(data.size() == 2){data.remove(0);}data.add(num);}data = new ArrayList<>();for(int num : player2){if(data.contains(10)){sum -= num * 2;} else {sum -= num;}if(data.size() == 2){data.remove(0);}data.add(num);}if(sum > 0){return 1;} else if(sum < 0){return 2;} else {return 0;}}
}