class Solution {
public:
int numTimesAllBlue(vector<int>& a) {
int n=a.size(),ans=0,mx=0;
for(int i=0;i<n;++i) {
mx=max(mx,a[i]);
if(mx==i+1) ++ans;
}
return ans;
}
};
假如开灯可以重复的话,就不能直接下面这样了,要这样。不让开空间的话,就原地标记light数组 *-1;
class Solution {
public:
int numTimesAllBlue(vector<int>& light) {
int n=light.size(),ans=0,mx=0,*vis=new int[n+1];
for(int i=1;i<=n;++i) vis[i]=0;
int cnt=0;//当前已开cnt个灯
for(int i=0;i<n;++i){
mx=max(mx,light[i]);
if(!vis[light[i]]) vis[light[i]]=1,++cnt;//假如与之前重复的话就不++cnt了
if(mx==cnt) ++ans;
}
return ans;
}
};