1004 最大連續1的個數III

2021-10-19 15:08:13 字數 1026 閱讀 5772

題目描述:

給定乙個由若干 0 和 1 組成的陣列 a,我們最多可以將 k 個值從 0 變成 1 。

返回僅包含 1 的最長(連續)子陣列的長度。

示例 1:

輸入:a = [1,1,1,0,0,0,1,1,1,1,0], k = 2

輸出:6

解釋:

[1,1,1,0,0,1,1,1,1,1,1]

粗體數字從 0 翻轉到 1,最長的子陣列長度為 6。

示例 2:
輸入:a = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], k = 3

輸出:10

解釋:[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]

粗體數字從 0 翻轉到 1,最長的子陣列長度為 10。

1 <= a.length <= 20000

0 <= k <= a.length

a[i] 為 0 或 1

題解:滑動視窗演算法

滑動視窗中用到了左右兩個指標,它們移動的思路是:以右指標作為驅動,拖著左指標向前走。右指標每次只移動一步,而左指標在內部 while 迴圈中每次可能移動多步。右指標是主動前移,探索未知的新區域;左指標是被迫移動,負責尋找滿足題意的區間。

**

/**

* @param a

* @param k

* @return

*/var

longestones

=function(a

,k) right ++

// 移動右端點

while

(count >k)

left ++

// 移動左端點

} sum = math.

max(sum, right - left)

}return sum

};

1004 最大連續1的個數 III

題目描述 給定乙個由若干 0 和 1 組成的陣列 a,我們最多可以將 k 個值從 0 變成 1 返回僅包含 1 的最長 連續 子陣列的長度。示例 1 輸入 a 1,1,1,0,0,0,1,1,1,1,0 k 2 輸出 6 解釋 1,1,1,0,0,1,1,1,1,1,1 粗體數字從 0 翻轉到 1,...

1004 最大連續1的個數 III

自己的做法很麻煩並且時間複雜度高,最壞o n 2 o n 2 o n2 原因是沒有想到去數學推導,一步一步去想很費勁,應該改掉這個毛病。想到了二分的做法,但是寫麻煩了,首先統計了所有0塊所在的初始位置和個數,記為陣列a,然後遍歷所有的地方去填充0,這個時候就不能方便的從a中得到填充到哪為止,從而陷入...

1004 最大連續1的個數 III

示例 1 輸入 a 1,1,1,0,0,0,1,1,1,1,0 k 2 輸出 6 解釋 1,1,1,0,0,1,1,1,1,1,1 粗體數字從 0 翻轉到 1,最長的子陣列長度為 6。示例 2 輸入 a 0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1 k 3 輸出 10 ...