题目
给你两个下标从 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; } } }