树状数组经典模板。
const int N =5e4+7;
int c[N];
class Solution {
public:
int numTimesAllBlue(vector<int>& flips) {
memset(c,0,sizeof c);
int n = N;
function<int(int)>lowbit = [&](int x){
return x&(-x);
};
function<void(int,int)>update = [&](int i,int k){
while(i<=n){
c[i]+=k;
i+=lowbit(i);
}
};
function<int(int)>sum = [&](int i){
int s = 0;
while(i>=1){
s+=c[i];
i-=lowbit(i);
}
return s;
};
int ans = 0;
int temp =0;
int k =0;
for(auto i: flips){
k++;
temp =max(temp,i);
update(i,1);
if( k==temp )ans++;
}
return ans;
}
};