题意 给定一个长度为n的序列,有0和1,可以将m个0变为1,求最长的1的长度
双指针 只要没超过m个就往右延申,超过了就l右移,一直移动到不超过m
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 ans=0,now=0; for(int i=0,j=0;i<a.size();i++) { while(now<=m&&j<a.size()) { ans=max(ans,j-i); if(a[j]==0)now++; j++; } if(now<=m)ans=max(ans,j-i); if(a[i]==0)now--; } return ans; } };