LeetCode 5473. 燈泡開關 IV

題目

房間中有 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'

解題思路

class Solution:
    def minFlips(self, target: str) -> int:
        targetList = list(target)
        pre = 0
        ret = 0
        for i in targetList:
            # print(int(i)^pre)
            if int(i)^pre == 1:
                ret = ret + 1
                pre = int(i)
            # print(pre)
        return ret
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。