2660. 保龄球游戏的获胜者 --力扣 --JAVA

题目

给你两个下标从 0 开始的整数数组 player1 和 player2 ,分别表示玩家 1 和玩家 2 击中的瓶数。

保龄球比赛由 n 轮组成,每轮的瓶数恰好为 10 。

假设玩家在第 i 轮中击中 xi 个瓶子。玩家第 i 轮的价值为:

  • 如果玩家在该轮的前两轮的任何一轮中击中了 10 个瓶子,则为 2xi 。
  • 否则,为 xi 。

玩家的得分是其 n 轮价值的总和。

返回

  • 如果玩家 1 的得分高于玩家 2 的得分,则为 1 ;
  • 如果玩家 2 的得分高于玩家 1 的得分,则为 2 ;
  • 如果平局,则为 0 。

解题思路

  1. 通过List存储上两个数据;
  2. 遍历player1统计玩家一的分数;
  3. 遍历player2统计玩家二的分数;
  4. 两者相减,大于0返回1,小于0返回2,等于0返回0;

代码展示

class Solution {
    public int isWinner(int[] player1, int[] player2) {
        List 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;
        }
    }
}

你可能感兴趣的:(力扣练习,游戏,leetcode,java)