ETH官方钱包

前往
大廳
主題

LeetCode - 2379. Minimum Recolors to Get K Consecutive Black Blocks 解題心得

Not In My Back Yard | 2023-07-09 18:00:17 | 巴幣 0 | 人氣 203

題目連結(jié):


題目意譯:
你被給定一個索引值從 0 開始且長度為 n 的字串 blocks,其中 blocks[i] 為 'W' 或是 'B',代表著第 i 個積木的顏色。字元 'W' 和 'B' 依序代表著白色和黑色。

你同時也被給定一整數(shù) k,其為期望的連續(xù)黑色積木之數(shù)量。

在一次操作中,你可以把一塊白色積木重新塗成黑色的積木。

回傳最少所需的操作數(shù),使得其中至少出現(xiàn)一次連續(xù) k 個黑色積木之序列。

限制:
n == blocks.length
1 ≦ n ≦ 100
blocks[i] 只會是 'W' 或 'B'。
1 ≦ k ≦ n



範例測資:
範例 1:
輸入: blocks = "WBBWWBBWBW", k = 7
輸出: 3
解釋:
其中一個得到 7 個連續(xù)黑色積木的方式為把第 0 、 3 和 4 個積木重新塗色使得 blocks = "BBBBBBBWBW"。
可以證明沒有其他可以用少於 3 次的操作來得到 7 個連續(xù)黑色積木。
因此,我們回傳 3。

範例 2:
輸入: blocks = "WBWBBBW", k = 2
輸出: 0
解釋:
不需要做出任何變化,因為連續(xù) 2 個黑色積木之序列已經(jīng)存在了。
因此,我們回傳 0。


解題思維:
因為要求是「連續(xù)」k 個黑色積木,因此我們只要窮舉每一個連續(xù) k 個積木可以在的位置,然後檢查每一個這樣子的位置需要把多少個白色積木變成黑色積木(即統(tǒng)計該區(qū)間中的白色積木之數(shù)量)。最後只要回傳最小值即可。

而這就是本題的核心想法。且因為數(shù)值範圍不大,所以單純地做就會過。



不過真的想加速的話,可以使用滑動視窗(Sliding Window,詳情參見這題或是參見範例程式碼)。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。
追蹤 創(chuàng)作集

作者相關(guān)創(chuàng)作

更多創(chuàng)作