[leetcode] 1375. Bulb Switcher III

给定一个数组,表示灯泡开启的顺序,当某个灯泡被开启时,其之前的所有灯泡会变为蓝色。任务是计算所有灯泡同时为蓝色的时刻数量。例如,输入[2,1,3,5,4]时,答案为3,因为在1、2和4时刻,所有灯泡都是蓝色的。解题方法是通过遍历数组,更新最大已开启灯泡的位置,并在该位置等于当前索引时记录时刻。
摘要由CSDN通过智能技术生成

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)

参考文献

[LeetCode]Python, easy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

农民小飞侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值