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

简介: 给你两个下标从 0 开始的整数数组 player1 和 player2 ,分别表示玩家 1 和玩家 2 击中的瓶数。保龄球比赛由 n 轮组成,每轮的瓶数恰好为 10 。假设玩家在第 i 轮中击中 xi 个瓶子。玩家第 i 轮的价值为:如果玩家在该轮的前两轮的任何一轮中击中了 10 个瓶子,则为 2xi 。否则,为 xi 。玩家的得分是其 n 轮价值的总和。返回如果玩家 1 的得分高于玩家 2 的得分,则为 1 ;如果玩家 2 的得分高于玩家 1 的得分,则为 2 ;如果平局,则为 0 。

 题目

给你两个下标从 0 开始的整数数组 player1player2 ,分别表示玩家 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;
                }
            }
        }

        image.gif


        目录
        相关文章
        |
        2月前
        |
        算法
        Leetcode第45题(跳跃游戏II)
        这篇博客文章讨论了如何使用贪心算法解决LeetCode第45题“跳跃游戏II”,目的是找到使用最少跳跃次数到达数组末尾的策略。
        80 8
        Leetcode第45题(跳跃游戏II)
        |
        4月前
        |
        算法
        LeetCode第55题跳跃游戏
        LeetCode第55题"跳跃游戏"的解题方法,通过记录当前最远可达到的位置并判断每个位置是否可达以及能否到达末尾,有效解决了跳跃至数组末尾的可行性问题。
        LeetCode第55题跳跃游戏
        |
        2月前
        |
        开发框架 IDE Java
        java制作游戏,如何使用libgdx,入门级别教学
        本文是一篇入门级教程,介绍了如何使用libgdx游戏开发框架创建一个简单的游戏项目,包括访问libgdx官网、设置项目、下载项目生成工具,并在IDE中运行生成的项目。
        54 1
        java制作游戏,如何使用libgdx,入门级别教学
        |
        2月前
        Leetcode第55题(跳跃游戏)
        LeetCode第55题“跳跃游戏”要求判断在一个非负整数数组中,从第一个位置出发,是否能够到达最后一个位置,其中每个位置的元素代表可跳跃的最大长度。
        32 0
        |
        2月前
        |
        算法 Java
        LeetCode(一)Java
        LeetCode(一)Java
        |
        4月前
        |
        算法 Java
        LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
        LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
        55 6
        |
        4月前
        |
        存储 算法 Java
        LeetCode经典算法题:打家劫舍java详解
        LeetCode经典算法题:打家劫舍java详解
        70 2
        |
        4月前
        |
        人工智能 算法 Java
        LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
        LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
        52 1
        |
        4月前
        |
        存储 算法 Java
        LeetCode经典算法题:预测赢家+香槟塔java解法
        LeetCode经典算法题:预测赢家+香槟塔java解法
        63 1
        |
        4月前
        |
        Python
        【Leetcode刷题Python】174. 地下城游戏
        LeetCode 174题 "地下城游戏" 的Python解决方案,使用动态规划算法计算骑士从左上角到右下角拯救公主所需的最低初始健康点数。
        55 3