您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页Leetcode3175:找到连续赢k场比赛的第一位玩家

Leetcode3175:找到连续赢k场比赛的第一位玩家

来源:五一七教育网

解题思路是使用一个队列来管理玩家的顺序。
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

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务