思路:
因为输掉的数字会放到最后面,那么以后肯定不能回到最前面来,所以直接不管。
维护当前胜利数字对应指针,与下一个要比较数字的指针,然后维护胜利数字与胜利回合就好了。如果比较完一轮都没有k,那肯定是最大数字最后获胜。
class Solution {
public:
int getWinner(vector<int>& arr, int k) {
int n = arr.size();
int mx = 0;
for(int i = 0;i < n;i++) {
mx = max(mx,arr[i]);
}
if(k > n) {
return mx;
} else {
int now = arr[0]; //当前数字
int cnt = 0;//连胜回合
for(int i = 1;i < n;i++) {
if(now > arr[i]) {
cnt++;
} else {
now = arr[i];
cnt = 1;
}
if(cnt == k) {
return now;
}
}
return mx;
}
}
};