Leetcode 1375:灯泡开关 III(超详细的解法!!!)
发布日期:2021-06-29 15:58:47 浏览次数:2 分类:技术文章

本文共 851 字,大约阅读时间需要 2 分钟。

房间中有 n 枚灯泡,编号从 1n,自左向右排成一排。最初,所有的灯都是关着的。

k 时刻( k 的取值范围是 0n - 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Leetcode 1376:灯泡开关 III(超详细的解法!!!)
下一篇:Leetcode 1374:生成每种字符都是奇数个的字符串(超详细的解法!!!)

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年04月24日 02时31分05秒