题目描述
房间中有 n 枚灯泡,编号从 1 到 n,自左向右排成一排。最初,所有的灯都是关着的。
在 k 时刻( k 的取值范围是 0 到 n - 1),我们打开 light[k] 这个灯。
灯的颜色要想 变成蓝色 就必须同时满足下面两个条件:
灯处于打开状态。
排在它之前(左侧)的所有灯也都处于打开状态。
请返回能够让 所有开着的 灯都 变成蓝色 的时刻 数目 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/bulb-switcher-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
C++
class Solution {
public:
int numTimesAllBlue(vector<int>& light) {
//思路:从头开始遍历,当前开灯的数目等于已开灯的最大序号时可以
int count=0; //所有开着的灯都变成蓝色的时刻数目
int number=0;//当前开着灯的数目
int this_max=0; //当前以开灯的最大灯号
for(int i=0;i<light.size();i++){
this_max=max(this_max,light[i]);
number++;
if(this_max==number){
count++;
}
}
return count;
}
};