3175. 找到连续赢 K 场比赛的第一位玩家

题解

使用了“打擂台”思想

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连胜的,那当前的胜者一定也是最大值了,后面无论多少次循环,他都一定还是胜者。

为什么会卡壳

最开始使用“模拟”的思维,导致了思维惯性,总是考虑着多次循环的情况,其实是多虑了(无语)