题目
Given an integer array arr of distinct integers and an integer k.
A game will be played between the first two elements of the array (i.e. arr[0] and arr[1]). In each round of the game, we compare arr[0] with arr[1], the larger integer wins and remains at position 0 and the smaller integer moves to the end of the array. The game ends when an integer wins k consecutive rounds.
Return the integer which will win the game.
It is guaranteed that there will be a winner of the game.
解题思路
当k>=n-1
时,答案就是最大的数,如果不是,就按照题目要求进行比较,但是只需要维护一个指针指向当前赢的数,以及赢的次数,当赢了k次之后,返回这个数,如果当遍历完所有数依旧没有赢k次,最后答案依旧是最大的数
代码
class Solution:
def getWinner(self, arr: List[int], k: int) -> int:
n = len(arr)
if k >= n - 1:
return max(arr)
cur = arr[0]
win = 0
for i in range(1, n):
if arr[i] > cur:
cur = arr[i]
win = 0
win += 1
if win == k:
break
return cur