力扣199場比賽 5473 燈泡開關 IV

2021-10-08 13:29:26 字數 1359 閱讀 3296

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

就變為 0 。

可以知道,下標開關i會影響i當前及右側的所有數值,但不會影響i左側數值,所以可以從左到右遍歷一遍,如果當前值與上乙個值一致,則無需翻轉,否則需要翻轉一次。例如:

「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 乙個操作,這不是乙個回合的分數 表示...