来点不一样的,别人都是固定移动右端,依据情况移动左端
我们来,固定移动左端,依据情况移动右端。处理一点点小细节。
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; }