本题采用尺取法。尺取法就是判断一个区间是否符合条件。通过两个指针来指定一个区间。
本题就是采用一个左指针(l)和一个右指针(r),来判断[l,r]中符合要求的区间。
t用于记录黑板的个数,若黑板的个数大于m了,左指针就往前移,减少黑板子的个数,每次都判断一个当前白板子的个数并记录下来,与之前的比较,保存其最大值。AC代码如下:

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int 
     * @param m int 
     * @param a intvector 
     * @return int
     */
    int solve(int n, int m, vector<int>& a) {
        // write code here
        int r = 0,l = 0,ans = 0,temp = 0;
        while(r < n){
            if(a[r] == 0)temp++;
            while(temp > m){
                if(a[l] == 0)temp--;
                l++;
            }
            ans = max(ans,r - l + 1);
            r++;
        }
        return ans;
    }
};