当前位置: 首页 > article >正文

找到连续赢 K 场比赛的第一位玩家

题目链接

找到连续赢 K 场比赛的第一位玩家

题目描述


注意

  • 2 <= n <= 10^5
  • 1 <= skills[i] <= 10^6
  • skills 中的整数互不相同
  • 这个比赛的赢家是第一位连续赢下k场比赛的玩家

解答思路

  • 双指针,一个指针maxIdx指向当前技能等级最高的玩家,另一个指针i从头开始遍历,如果skills[i]等级更高,则更新maxIdx为i,games修改为1;如果skills[i]等级更低,则更新games值,直到找到第一位games达到k的玩家,返回maxIdx
  • 需要注意的是,如果遍历一次仍未找到连续赢K场比赛的玩家,则输掉的玩家都移至末尾,此时maxIdx实际指向的是整个数组中的最大值,且其此时处于数组头部,第二轮连续赢 K 场比赛的第一位玩家一定就是该玩家

代码

class Solution {
    public int findWinningPlayer(int[] skills, int k) {
        int maxIdx = 0;
        int games = 0;
        for (int i = 1; i < skills.length; i++) {
            if (skills[i] > skills[maxIdx]) {
                maxIdx = i;
                games = 1;
            } else {
                games++;
            }
            if (games >= k) {
                return maxIdx;
            }
        }
        return maxIdx;
    }
}

关键点

  • 双指针的思想
  • 如果第一轮未找到连续赢 K 场比赛的第一位玩家,则第二轮满足该条件的玩家一定是maxIdx对应的玩家

http://www.kler.cn/news/363298.html

相关文章:

  • docker harbor
  • 基于YOLO的钢材缺陷检测系统设计与实现
  • GRU神经网络理解
  • 数学建模微分方程模型——传染病模型
  • Unity3D学习FPS游戏(1)获取素材、快速了解三维模型素材(骨骼、网格、动画、Avatar、材质贴图)
  • security - 第一步-引入pom(包含jwt和mybatis)
  • YoloV8改进策略:注意力改进|DeBiFormer,可变形双级路由注意力|引入DeBiLevelRoutingAttention注意力模块(全网首发)
  • Qt初识及其环境搭建
  • 无人机初识及应用概览
  • 实现vuex源码,手写
  • 什么是网络代理
  • torch.argsort 函数介绍
  • 【AIGC】ChatGPT提示词Prompt高效编写模式:Self-ask Prompt、ReACT与Reflexion
  • Java面向对象编程进阶(一)
  • 对于MacOSX开启稳定SMB分享的研究
  • 讲个故事:关于一次接口性能优化的心里路程
  • 数据库运行原理图
  • JVM锁升级的过程(偏向锁,轻量级锁,重量级锁)
  • String的运算符重载
  • C#中跨线程调用的方法一点总结
  • 数据仓库基础概念
  • 新探索研究生英语读写教程pdf答案(基础级)
  • 阿里云服务器如何安装宝塔
  • jupyter DatabaseError: database disk image is malformed 解决办法
  • 分布式检测线路、精准定位故障:输电线路故障定位监测系统
  • 国外电商系统开发-运维系统Docker镜像