【LeetCode】2660. 保龄球游戏的获胜者 【前两轮任何一轮 分类】

26 阅读1分钟

题目链接

image.png

image.png

image.png

image.png

Python3

方法: 模拟 O(n)O(1)\lgroup O(n)、O(1) \rgroup

class Solution:
    def isWinner(self, player1: List[int], player2: List[int]) -> int:
        score1 = self.calScore(player1)
        score2 = self.calScore(player2)

        if score1 > score2:
            return 1 
        elif score1 < score2:
            return 2
        else:
            return 0


    def calScore(self, player):
        score = 0
        for i, x in enumerate(player):
            if i > 0 and player[i-1] == 10 or i > 1 and player[i-2] == 10:  # 这个分类 挺妙的
                score += 2 * x
            else:
                score += x

        return score

image.png

C++

class Solution {
public:
    int isWinner(vector<int>& player1, vector<int>& player2) {
        int score1 = calScore(player1);
        int score2 = calScore(player2);
        
        if (score1 > score2)
           return 1;
        else if (score1 < score2)
            return 2;
        else{
            return 0;
        }   
    }

    // 子模块
    int calScore(vector<int> & player){
        int score = 0;
        for (int i = 0; i < player.size(); ++i){
            if ((i > 0 && player[i-1] == 10) || (i > 1 && player[i-2] == 10)){
                score += 2 * player[i];
            }else{
                score += player[i];
            }
        }
        return score;
    }
};