题目:
分析:
在洛谷上应该做过。
但是依然没有想出来,看到贪心标签才想起来当时是只管后面,不管前面。 虽然不清楚为啥,仅仅是感觉。
这次细细看看题解。
本来想直接进行模拟,ok,然后想到了差分。
class Solution {
public:
int minKBitFlips(vector<int>& v, int K) {
vector<int> v2(v.size()+2,0);
int k=0;
int i=0;
int c=0;
for(;i<=v.size()-K;i++)
{
//cout<<k<<' '<<v2[i]<<endl;
k+=v2[i];
if(v[i]==0&&k%2==1) continue;
if(v[i]==1&&k%2==0) continue;
c++;
v2[i+1]++;
v2[i+K]--;
}
for(;i<v.size();i++)
{
k+=v2[i];
if(v[i]==0&&k%2==1) continue;
if(v[i]==1&&k%2==0) continue;
return -1;
}
return c;
}
};