具体思想:
亮灯问题,卡了一下;
求和思路:由于是1-n完全不同,直接求和看是否相等;
亮灯记录思路:记录之前的最大值,遍历到对应的最大值的位置,如果相等,说明之前的灯全亮过;
具体代码:
1.求和思路:
class Solution {
public:
int numTimesAllBlue(vector<int>& flips) {
int s=0;
int sum=0;
int ret=0;
for(int i=0;i<flips.size();i++){
s+=i+1;
sum+=flips[i];
if(s==sum)
ret++;
}
return ret;
}
};
2.记录思路:
class Solution {
public:
int numTimesAllBlue(vector<int>& flips) {
int maxn=0;
int ret=0;
for(int i=0;i<flips.size();i++){
maxn=max(maxn,flips[i]);
if(maxn==i+1)
ret++;
}
return ret;
}
};```