[LeetCode] Find the Winner of an Array Game

1535. Find the Winner of an Array Game

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
public:
int getWinner(vector<int>& A, int k) {
int win = 0, winner = 0, appo = 1, n = A.size();
k = min(k, (int)A.size() - 1);
while(win < k) {
if(A[winner] > A[appo]) win++;
else {
win = 1;
winner = appo;
}
appo = (appo + 1) % n;
}

return A[winner];
}
};
Author: Song Hayoung
Link: https://songhayoung.github.io/2022/08/18/PS/LeetCode/find-the-winner-of-an-array-game/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.