因为每次只能填一个数字,在第i步想要前i个都被填过,说明在这一步的所有填过最大的下标等于i,如果大于i,就说明i后面的数字被填过,一步只能填一个,那么必定前i个存在没有被填过的数字。
class Solution {
public:
int numTimesAllBlue(vector<int>& flips) {
int ans=0;
int cur=0;
int n=flips.size();
for(int i=0;i<n;i++)
{
cur=max(cur,flips[i]);//取当前步所填过的最大值
if(cur==i+1) ans++; //如果最大值==当前步,答案++
}
return ans;
}
};