房間中有 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』
這道題仔細觀察一下還是比較簡單的,對於題幹中描述,
選擇當前配置下的任意乙個燈泡(下標為 i ) 翻轉下標從 i 到 n-1 的每個燈泡 翻轉時,如果燈泡的狀態為 0 就變為 1,為 1可以知道,下標開關i會影響i當前及右側的所有數值,但不會影響i左側數值,所以可以從左到右遍歷一遍,如果當前值與上乙個值一致,則無需翻轉,否則需要翻轉一次。例如:就變為 0 。
「00010111」,因為初始是「00000000」,
所以可以第一步翻轉第i=3個開關=》「00011111」,此時前面0001已經和目標值一致,無需再變動;
第二步翻轉i=4個開關=》「00010000」,此時字首00010與目標值一致;
第三步翻轉i=5個開關=》"00010111"此時已與目標值完全一致,所以總共需要翻轉3次。
class
solution
}return n;}}
;
力扣199場比賽 5474 好葉子節點對的數量
給你二叉樹的根節點 root 和乙個整數 distance 如果二叉樹中兩個 葉 節點之間的 最短路徑長度 小於或者等於 distance 那它們就可以構成一組 好葉子節點對 返回樹中 好葉子節點對的數量 示例 1 輸入 root 1,2,3,null,4 distance 3 輸出 1 解釋 樹的...
第 199 場力扣周賽題解
5472.重新排列字串 思路 額外開乙個字元陣列儲存以及完成題目要求的移動即可。class solution 5473.燈泡開關 iv 思路 一定是從左到右翻轉的,若當前燈是開著的,判斷它之前翻轉了幾次,若是偶數次,則當前仍需要執行翻轉操作,對於關著的燈也是一樣的。class solution re...
力扣 棒球比賽
你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效回合得分的兩倍。4.c 乙個操作,這不是乙個回合的分數 表示...