Leetcode 1375:灯泡开关 III(超详细的解法!!!)
发布日期:2021-06-29 15:58:47
浏览次数:2
分类:技术文章
本文共 851 字,大约阅读时间需要 2 分钟。
房间中有 n
枚灯泡,编号从 1
到 n
,自左向右排成一排。最初,所有的灯都是关着的。
在 k 时刻( k 的取值范围是 0
到 n - 1
),我们打开 light[k]
这个灯。
灯的颜色要想 变成蓝色 就必须同时满足下面两个条件:
- 灯处于打开状态。
- 排在它之前(左侧)的所有灯也都处于打开状态。
请返回能够让 所有开着的 灯都 变成蓝色 的时刻 数目 。
示例 1:
输入:light = [2,1,3,5,4]输出:3解释:所有开着的灯都变蓝的时刻分别是 1,2 和 4 。
示例 2:
输入:light = [3,2,4,1,5]输出:2解释:所有开着的灯都变蓝的时刻分别是 3 和 4(index-0)。
示例 3:
输入:light = [4,1,2,3]输出:1解释:所有开着的灯都变蓝的时刻是 3(index-0)。第 4 个灯在时刻 3 变蓝。
示例 4:
输入:light = [2,1,4,3,6,5]输出:3
示例 5:
输入:light = [1,2,3,4,5,6]输出:6
提示:
n == light.length
1 <= n <= 5 * 10^4
light
是[1, 2, ..., n]
的一个排列。
解题思路
可以这样思考,从左向右遍历每个数,遍历的过程中记录当前为止遍历到的最大值maxv
,如果当前遍历到的数的个数和maxv
一样,说明左边的灯都点亮了。
class Solution: def numTimesAllBlue(self, light: List[int]) -> int: res = maxv = 0 for i, v in enumerate(light): maxv = max(v, maxv) if maxv == i + 1: res += 1 return res
我将该问题的其他语言版本添加到了我的
如有问题,希望大家指出!!!
转载地址:https://coordinate.blog.csdn.net/article/details/104768355 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月24日 02时31分05秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
电气毕业生在国家电网都干啥工作?
2021-07-02
为什么LED灯会越用越暗?
2019-04-29
知乎热议:嵌入式开发中C++好用吗?
2019-04-29
这100道Linux常见面试题,看看你会多少?
2019-04-29
嵌入式开发中常用的几种通信接口总结
2019-04-29
为什么你学C++这么难?
2019-04-29
无人机破巡检难题,秒变电网卫士
2019-04-29
五年,我成为了一名嵌入式工程师。
2019-04-29
2020年电赛题目,命题专家们怎么看?
2019-04-29
PCB元器件摆放不可忽略的10个技巧
2019-04-29
掌握AI核心技术没有秘籍,能自己创造就是王道
2019-04-29
大学老师的月薪多少?实话实说:4万多一点……
2019-04-29
2020年电赛题目,命题专家权威解析!
2019-04-29
写论文,这个神器不能少!
2019-04-29
现在做硬件工程师还有前途吗?
2019-04-29
华为被超越!这家公司成中国最大智能手机制造商,不是小米!
2019-04-29
芯片为什么持续缺货?
2019-04-29
美国无人机在火星首飞成功,创造历史,3米飞行高度悬停30秒
2019-04-29
缺货涨价很久的MCU的国产和国外厂家汇总!(80家)
2019-04-29
华为重磅反击,鸿蒙来了!
2019-04-29