解题思路是使用一个队列来管理玩家的顺序。
1. 首先,我们初始化一个队列 queue,其中存储了玩家的编号,初始时按照玩家的顺序排列。
2. 我们设置 current_player`变量为队列的第一个玩家,即queue[0],并初始化连胜场次win_count为0。
3. 我们开始遍历队列中的玩家,从第二个玩家开始:
我们将当前玩家current_player与下一个玩家(对手)进行技能等级比较。
如果当前玩家的技能等级高于对手,则连胜场次win_count加1;否则,将当前玩家更新为对手,并重置连胜场次为1。
每次比较后,我们检查是否当前玩家已经连胜了 k 场比赛,如果是,则直接返回当前玩家的编号。
4. 如果遍历完整个队列后仍未找到连胜 k 场的玩家,则返回最后一个玩家的编号。
通过模拟比赛过程,不断更新当前玩家并记录连胜场次,直到找到满足条件的连胜 k 场的玩家或遍历完整个队列。
class Solution(object):
def findWinningPlayer(self, skills, k):
queue = list(range(len(skills)))
current_player = queue[0]
win_count = 0
for i in range(1, len(queue)):
opponent = queue[i]
if skills[current_player] > skills[opponent]:
win_count += 1
else:
current_player = opponent
win_count = 1
if win_count == k:
return current_player
return current_player