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

2021-10-19 13:32:05 字數 1581 閱讀 4186

在僅包含 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]

1 <= a.length <= 30000

1 <= k <= a.length

因為模擬所有翻轉可能的耗費太大,所以我們通過數學手段簡化,用奇偶來表示翻轉的結果

判斷元素i是否要被翻轉條件:len(que) % 2 == a[i](奇偶——元素)

「不可能」條件:i + k > n(超長)

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 解釋 ...