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

2023-12-28 10:48:46

题目

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

文章来源:https://blog.csdn.net/qq_45794129/article/details/135258361
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。