给你两个下标从 0 开始的整数数组 p l a y e r 1 player1 player1 和 p l a y e r 2 player2 player2 ,分别表示玩家 1 和玩家 2 击中的瓶数。
保龄球比赛由 n n n 轮组成,每轮的瓶数恰好为 10 10 10 。
玩家的得分是其 n n n 轮价值的总和。
返回
输入: p l a y e r 1 player1 player1 = [4,10,7,9], p l a y e r 2 player2 player2 = [6,5,2,3]
输出:1
解释: p l a y e r 1 player1 player1 的得分是 4 + 10 + 27 + 29 = 46 。
p l a y e r 2 player2 player2 的得分是 6 + 5 + 2 + 3 = 16 。
p l a y e r 1 player1 player1 的得分高于 p l a y e r 2 player2 player2 的得分,所以 p l a y 1 play1 play1 在比赛中获胜,答案为 1 。
输入: p l a y e r 1 player1 player1 = [3,5,7,6], p l a y e r 2 player2 player2 = [8,10,10,2]
输出:2
解释: p l a y e r 1 player1 player1 的得分是 3 + 5 + 7 + 6 = 21 。
p l a y e r 2 player2 player2 的得分是 8 + 10 + 210 + 22 = 42 。
p l a y e r 2 player2 player2 的得分高于 player1 的得分,所以 p l a y 2 play2 play2 在比赛中获胜,答案为 2 。
输入: p l a y e r 1 player1 player1 = [2,3], p l a y e r 2 player2 player2 = [4,1]
输出:0
解释: p l a y e r 1 player1 player1 的得分是 2 + 3 = 5 。
p l a y e r 2 player2 player2 的得分是 4 + 1 = 5 。
p l a y e r 1 player1 player1 的得分等于 p l a y e r 2 player2 player2 的得分,所以这一场比赛平局,答案为 0
- n = = p l a y e r 1. l e n g t h = = p l a y e r 2. l e n g t h n == player1.length == player2.length n==player1.length==player2.length
- 1 < = n < = 1000 1 <= n <= 1000 1<=n<=1000
- 0 < = p l a y e r 1 [ i ] , p l a y e r 2 [ i ] < = 10 0 <= player1[i], player2[i] <= 10 0<=player1[i],player2[i]<=10
相关标签 :数组、模拟
今天的问题难度简单,菜狗狂喜,轻松拿捏。
根据题意可以知道,第 i i i 轮中如果前两轮中存在任意一轮击中 10 10 10 个瓶子,则得分为 2 x i 2x_i 2xi? ,否则得分为 x i x_i xi? 。我们直接模拟即可,假设当前遍历到 第 i i i 轮,检测 i i i 的前两轮是否击中 10 10 10 个瓶子,主要检测数组的第 i ? 1 i?1 i?1, i ? 2 i?2 i?2 个元素中是否存在等于 10 10 10 的元素,如果存在则当前得分翻倍,否则不进行翻倍,累加每轮得分得到总得分别为 s 1 , s 2 s1,s2 s1,s2,比较二者的大小,根据题意返回即可。
class Solution:
def isWinner(self, player1: List[int], player2: List[int]) -> int:
def calculate_score(player):
score = 0
for i in range(len(player)):
if i > 1 and player[i-1] == 10 or (player[i-2] == 10 and player[i-1] != 10):
score += 2 * player[i]
else:
score += player[i]
return score
score1 = calculate_score(player1)
score2 = calculate_score(player2)
if score1 > score2:
return 1
elif score1 < score2:
return 2
else:
return 0