1. 問題描述:
房間中有 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] 的乙個排列。
2. 思路分析:
這道題目屬於邏輯分析題目吧,其實理解之後是很簡單的,不要被大量的文字所干擾,看著進行分析就對了,通過分析題目可以知道,我們將點亮的燈變為藍色是當當前點亮的數字最大的燈與燈的數量是相等的情況下,比如當前點亮的燈是4但是此時點亮的燈只有3盞說明這些燈不是全部能夠變為藍色,比如當4 1 2 3當3時刻的時候最大的燈是4而這個時候恰恰點亮的燈是4盞說明這個時候燈全部變為藍色
3. **如下:
class solution
return res;}}
leetcode1375燈泡開關三
傻兮兮地每個都判斷一次 class solution object defnumtimesallblue self,light type light list int rtype int 就是判斷某個時刻k,light 0 k 1 是否包含了 1 k 1 count 0for i in range ...
319 燈泡開關
初始時有 n 個燈泡關閉。第 1 輪,你開啟所有的燈泡。第 2 輪,每兩個燈泡你關閉一次。第 3 輪,每三個燈泡切換一次開關 如果關閉則開啟,如果開啟則關閉 第 i 輪,每 i 個燈泡切換一次開關。對於第 n 輪,你只切換最後乙個燈泡的開關。找出 n 輪後有多少個亮著的燈泡。示例 輸入 3輸出 1解...
319 燈泡開關
初始時有 n 個燈泡關閉。第 1 輪,你開啟所有的燈泡。第 2 輪,每兩個燈泡你關閉一次。第 3 輪,每三個燈泡切換一次開關 如果關閉則開啟,如果開啟則關閉 第 i 輪,每 i 個燈泡切換一次開關。對於第 n 輪,你只切換最後乙個燈泡的開關。找出 n 輪後有多少個亮著的燈泡。示例 輸入 3 輸出 1...