class Solution { public: int b[1000006];//第一次出现i个黑色块时的位置 int tot=0;//目前有多少个黑色块 int ans=0;//记录答案 int solve(int n, int m, vector<int>& a) { b[0]=-1;//初始化 for(int i=0;i<n;i++) { if(a[i]==0) { tot++; b[tot]=i; ans=max(ans,i-b[max(0,tot-m)]);//感谢 @Yuanirah 提出的错误 } else{ ans=max(ans,i-b[max(0,tot-m)]); } } return ans; } };