1529 燈泡開關 IV

2021-10-12 16:45:53 字數 1210 閱讀 9632

題目描述:

房間中有 n 個燈泡,編號從 0 到 n-1 ,自左向右排成一行。最開始的時候,所有的燈泡都是 關 著的。

請你設法使得燈泡的開關狀態和 target 描述的狀態一致,其中 target[i] 等於 1 第 i 個燈泡是開著的,等於 0 意味著第 i 個燈是關著的。

有乙個開關可以用於翻轉燈泡的狀態,翻轉操作定義如下:

選擇當前配置下的任意乙個燈泡(下標為 i )

翻轉下標從 i 到 n-1 的每個燈泡

翻轉時,如果燈泡的狀態為 0 就變為 1,為 1 就變為 0 。

返回達成 target 描述的狀態所需的 最少 翻轉次數。

示例 1:

輸入:target = 「10111」

輸出:3

解釋:初始配置 「00000」.

從第 3 個燈泡(下標為 2)開始翻轉 「00000」 -> 「00111」

從第 1 個燈泡(下標為 0)開始翻轉 「00111」 -> 「11000」

從第 2 個燈泡(下標為 1)開始翻轉 「11000」 -> 「10111」

至少需要翻轉 3 次才能達成 target 描述的狀態

示例 2:

輸入:target = 「101」

輸出:3

解釋:「000」 -> 「111」 -> 「100」 -> 「101」.

示例 3:

輸入:target = 「00000」

輸出:0

示例 4:

輸入:target = 「001011101」

輸出:5

1 <= target.length <= 10^5

target[i] == 『0』 或者 target[i] == 『1』

方法1:

(1)根據變換的規則,都是從某個位置開始,同時反轉其後的所有的燈的狀態;

(2)初始狀態是字元『0』,則找到第乙個不為零的字元的位置,說明從該位置開始,可以有狀態的反轉,則隨後,若出現某個字元和前乙個字元不同,說明需要再經過一次反轉,故根據不相同的次數,統計需要翻轉的次數;

class

solution

}return counts;}}

;

LeetCode 1529 燈泡開關 IV

題意 房間中有 n 個燈泡,編號從 0 到 n 1 自左向右排成一行。最開始的時候,所有的燈泡都是 關 著的。請你設法使得燈泡的開關狀態和 target 描述的狀態一致,其中 target i 等於 1 第 i 個燈泡是開著的,等於 0 意味著第 i 個燈是關著的。有乙個開關可以用於翻轉燈泡的狀態,...

319 燈泡開關

初始時有 n 個燈泡關閉。第 1 輪,你開啟所有的燈泡。第 2 輪,每兩個燈泡你關閉一次。第 3 輪,每三個燈泡切換一次開關 如果關閉則開啟,如果開啟則關閉 第 i 輪,每 i 個燈泡切換一次開關。對於第 n 輪,你只切換最後乙個燈泡的開關。找出 n 輪後有多少個亮著的燈泡。示例 輸入 3輸出 1解...

319 燈泡開關

初始時有 n 個燈泡關閉。第 1 輪,你開啟所有的燈泡。第 2 輪,每兩個燈泡你關閉一次。第 3 輪,每三個燈泡切換一次開關 如果關閉則開啟,如果開啟則關閉 第 i 輪,每 i 個燈泡切換一次開關。對於第 n 輪,你只切換最後乙個燈泡的開關。找出 n 輪後有多少個亮著的燈泡。示例 輸入 3 輸出 1...