前言
每天和你一起刷 LeetCode 每日一题~
1024 程序员节快乐~
LeetCode 启动!
题目:找到连续赢 K 场比赛的第一位玩家
代码与解题思路
题目让我们从第一个元素开始让数组中的元素排队一个个打擂台,直到找到最先赢下 k 次的元素编号
因为题目给出的数组的元素各不相同,所以在一个数组中一定存在一个最大值,所以我们只需要进行一次遍历,找到最先赢下 k 次的元素 / 最大的那个元素即可
用 win 实时记录当前连胜的编号 maxI 的胜利次数,一旦到达 k 就跳出循环并返回,假设一直没达到 k,那将数组遍历完一遍后,maxI 编号代表的元素就会是数组中最大的元素,根据我们前面的分析,直接返回最大元素即可。下面是代码实现:
func findWinningPlayer(skills []int, k int) (maxI int) {win := 0 // 赢下的次数for i := 1; i < len(skills) && win < k; i++ {if skills[i] > skills[maxI] { maxI = i // 更新更强的玩家编号win = 0 // 胜利次数重新计算}win++}return maxI
}
每天进步一点点,我们明天不见不散~
可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。