Description
There is a room with n bulbs, numbered from 1 to n, arranged in a row from left to right. Initially, all the bulbs are turned off.
At moment k (for k from 0 to n - 1), we turn on the light[k] bulb. A bulb change color to blue only if it is on and all the previous bulbs (to the left) are turned on too.
Return the number of moments in which all turned on bulbs are blue.
Example 1:
Input: light = [2,1,3,5,4]
Output: 3
Explanation: All bulbs turned on, are blue at the moment 1, 2 and 4.
Example 2:
Input: light = [3,2,4,1,5]
Output: 2
Explanation: All bulbs turned on, are blue at the moment 3, and 4 (index-0).
Example 3:
Input: light = [4,1,2,3]
Output: 1
Explanation: All bulbs turned on, are blue at the moment 3 (index-0).
Bulb 4th changes to blue at the moment 3.
Example 4:
Input: light = [2,1,4,3,6,5]
Output: 3
Example 5:
Input: light = [1,2,3,4,5,6]
Output: 6
Constraints:
- n == light.length
- 1 <= n <= 5 * 10^4
- light is a permutation of [1, 2, …, n]
分析
题目的意思是:给你一个数组,求出打开的灯全部变成蓝色的时刻数,这道题最直观的思路是如果遍历到第K个,刚好前面K个灯全部打开,则全部变成蓝色。所以用maxPos记录遍历灯的最大索引,当索引的位置等于K时,说明前面的全部变亮了,就意味着全变蓝,所以统计这个位置就行了。
代码
class Solution {
class Solution:
def numTimesAllBlue(self, light: List[int]) -> int:
num=0
maxPos=0
res=[]
for item in light:
maxPos=max(maxPos,item)
num+=1
if(num==maxPos):
res.append(item)
return len(res)