来点不一样的,别人都是固定移动右端,依据情况移动左端
我们来,固定移动左端,依据情况移动右端。处理一点点小细节。

int solve(int n, int m, vector<int>& a) {
    int r = 0, l = 0, cnt = 0, maxx = -1;
    for(int l = 0;l<a.size();l++){
        while (r < a.size() && cnt <= m) {
            if (!a[r++]) cnt++;
        }
        int t = r == a.size() ? 0 : 1;
        maxx = max(maxx, r - l - t);
        if (cnt >= m) 
           if (!a[l]) cnt--;
    }
    return maxx;
}