滑動視窗 995 K 連續位的最小翻轉次數。

2021-10-19 13:11:21 字數 889 閱讀 4781

在僅包含 0 和 1 的陣列 a 中,一次 k 位翻轉包括選擇乙個長度為 k 的(連續)子陣列,同時將子陣列中的每個 0 更改為 1,而每個

1 更改為 0。

返回所需的 k 位翻轉的最小次數,以便陣列沒有值為 0 的元素。如果不可能,返回 -1。

示例 1:

輸入:a = [0,1,0], k = 1 輸出:2 解釋:先翻轉 a[0],然後翻轉 a[2]。

示例 2:

輸入:a = [1,1,0], k = 2 輸出:-1 解釋:無論我們怎樣翻轉大小為 2 的子陣列,我們都不能使陣列變為 [1,1,1]。

示例 3:

輸入:a = [0,0,0,1,0,1,1,0], k = 3 輸出:3 解釋: 翻轉 a[0],a[1],a[2]: a變成

[1,1,1,1,0,1,1,0] 翻轉 a[4],a[5],a[6]: a變成 [1,1,1,1,1,0,0,0] 翻轉

a[5],a[6],a[7]: a變成 [1,1,1,1,1,1,1,1]

需要明白的一點是當遍歷到第 i 個元素時,a[i]的狀態是 0 還是 1,只和前面 k-1 個元素中,有多少個元素會使得 第 i 個元素進行翻轉。

現在只需要前面在翻轉的時候,就儲存下來,使用佇列,保證按順序最多隻儲存 k 個元素。

class

solution

if(qindex.

size()

%2==a[i]

) qindex.

push

(i);

res +=1

;}}return res;}}

;

995 K 連續位的最小翻轉次數

題目描述 在僅包含 0 和 1 的陣列 a 中,一次 k 位翻轉包括選擇乙個長度為 k 的 連續 子陣列,同時將子陣列中的每個 0 更改為 1,而每個 1 更改為 0。返回所需的 k 位翻轉的次數,以便陣列沒有值為 0 的元素。如果不可能,返回 1。解題思路一,因為0和1翻轉只有兩種情況,那麼我們可...

995 K 連續位的最小翻轉次數

在僅包含 0 和 1 的陣列 a 中,一次 k 位翻轉包括選擇乙個長度為 k 的 連續 子陣列,同時將子陣列中的每個 0 更改為 1,而每個 1 更改為 0。返回所需的 k 位翻轉的最小次數,以便陣列沒有值為 0 的元素。如果不可能,返回 1。示例 1 輸入 a 0,1,0 k 1 輸出 2 解釋 ...

995 K 連續位的最小翻轉次數

在僅包含 0 和 1 的陣列 a 中,一次 k 位翻轉包括選擇乙個長度為 k 的 連續 子陣列,同時將子陣列中的每個 0 更改為 1,而每個 1 更改為 0。返回所需的 k 位翻轉的最小次數,以便陣列沒有值為 0 的元素。如果不可能,返回 1。示例 1 輸入 a 0,1,0 k 1 輸出 2 解釋 ...