LC每日一题|20240519 - 1535. 找出数组游戏的赢家
给你一个由 不同 整数组成的整数数组
arr和一个整数k。每回合游戏都在数组的前两个元素(即
arr[0]和arr[1])之间进行。比较arr[0]与arr[1]的大小,较大的整数将会取得这一回合的胜利并保留在位置0,较小的整数移至数组的末尾。当一个整数赢得k个连续回合时,游戏结束,该整数就是比赛的 赢家 。返回赢得比赛的整数。
题目数据 保证 游戏存在赢家。
提示:
2 <= arr.length <= 10^51 <= arr[i] <= 10^6arr所含的整数 各不相同 。1 <= k <= 10^9
题目等级:Medium
解题思路
这是以前做过的一道题,当时直接暴力也过了,现在想想可能是某次凑数的题
因为今天收拾了一天东西,实在是没有精力再去看题,所以大概就是直接抄了个题解
总体来说不难,遍历一次,维护一下最大值以及它赢得的次数就可以了
AC代码
class Solution {
fun getWinner(arr: IntArray, k: Int): Int {
var max = arr[0]
var win = 0
for (i in 1 until arr.size) {
if (win < k) {
if (arr[i] > max) {
max = arr[i]
win = 0
}
win++
}
}
return max
}
}
时间复杂度:O(n)
空间复杂度:O(1)