当前位置: 代码迷 >> 综合 >> 二、灯泡开关 III(Weekly Contest 179)
  详细解决方案

二、灯泡开关 III(Weekly Contest 179)

热度:72   发布时间:2023-09-23 14:07:47.0

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

在 k 时刻( k 的取值范围是 0 到 n - 1),我们打开 light[k] 这个灯。

灯的颜色要想 变成蓝色 就必须同时满足下面两个条件:

灯处于打开状态。
排在它之前(左侧)的所有灯也都处于打开状态。
请返回能够让 所有开着的 灯都 变成蓝色 的时刻 数目 。

示例 1:

二、灯泡开关 III(Weekly Contest 179)

输入: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] 的一个排列。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/bulb-switcher-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

我想复杂了,其实你只要看已经开的灯的数量即可

class Solution {
    public int numTimesAllBlue(int[] light) {
    int size = light.length;int count = 0, maxReachingPoint = 0;for (int i = 0 ; i < size; i++){
    maxReachingPoint = Math.max(maxReachingPoint, light[i]);if ( i + 1 == maxReachingPoint){
    count += 1;}}return count;}
}
  相关解决方案