题解
使用了“打擂台”思想
class Solution {
public:
int findWinningPlayer(vector<int>& skills, int k) {
int max_i = 0, win = 0;
for (int i = 1; i < skills.size() && win < k; i++) {
if (skills[i] > skills[max_i]) {
max_i = i;
win = 0;
}
win++;
}
return max_i;
}
};
先说说为什么记录这个其实简单的题
其实单纯是脑子卡了一会,没转过弯。没想通“第一次循环如果没找到胜者,而第二次循环才能找到,并且不是最大值的情况”。其实这是不可能的,第一次循环结束如果没找找到达到k连胜的,那当前的胜者一定也是最大值了,后面无论多少次循环,他都一定还是胜者。
为什么会卡壳
最开始使用“模拟”的思维,导致了思维惯性,总是考虑着多次循环的情况,其实是多虑了(无语)