1535. Find the Winner of an Array Game
阿新 • • 發佈:2020-08-03
Given an integer arrayarr
ofdistinctintegers and an integerk
.
A game will be played between the first two elements of the array (i.e.arr[0]
andarr[1]
). In each round of the game, we comparearr[0]
witharr[1]
, the larger integerwins and remains at position0
and the smaller integer moves to the end of the array. The game ends when an integer winsk
Returnthe integer which will win the game.
It isguaranteedthat there will be a winner of the game.
Example 1:
Input: arr = [2,1,3,5,4,6,7], k = 2 Output: 5 Explanation: Let's see the rounds of the game: Round | arr | winner | win_count 1 | [2,1,3,5,4,6,7] | 2 | 1 2 | [2,3,5,4,6,7,1] | 3 | 1 3 | [3,5,4,6,7,1,2] | 5 | 1 4 | [5,4,6,7,1,2,3] | 5 | 2 So we can see that 4 rounds will be played and 5 is the winner because it wins 2 consecutive games.
Example 2:
Input: arr = [3,2,1], k = 10 Output: 3 Explanation: 3 will win the first 10 rounds consecutively.
Example 3:
Input: arr = [1,9,8,2,3,7,6,4,5], k = 7 Output: 9
Example 4:
Input: arr = [1,11,22,33,44,55,66,77,88,99], k = 1000000000 Output: 99
Constraints:
2 <= arr.length <= 10^5
1 <= arr[i] <= 10^6
arr
containsdistinctintegers.1 <= k <= 10^9
class Solution { public int getWinner(int[] arr, int k) { int cur = arr[0], cnt = 0; for(int i = 1; i < arr.length; i++) { if(arr[i] > cur) { cur = arr[i]; cnt = 0; } if(++cnt == k) return cur; } return cur; } }
欲哭無淚啊,就差那麼一點就對了
要注意的是兩個是並行的if,如果更新了較大值也是要++cnt的,用else的話會少考慮一次。
如果k超級大的話直接返回最大值即可,也不用排序,一次就能找出最大值