JavaScript 中 n 次交換後連續 1 的最大數量
問題
我們需要編寫一個 JavaScript 函式,該函式將二進位制陣列(僅包含 0 或 1 的陣列)arr 作為第一個引數,將數字 num 作為第二個引數。
我們至多可以將陣列中出現的 0 修改為 1,並且我們的函式應該在進行這些修改後返回僅包含 1 的最長(連續)子陣列的長度。
例如,如果函式的輸入為 −
const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]; const num = 2;
則輸出應為 −
const output = 6;
輸出說明
因為在將兩個零更改為 1 後,陣列的最後 6 個元素將變為 1。
示例
程式碼如下 −
const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]; const num = 2; const longestOnes = (arr = [], num = 1) => { let max = 0; let left = 0; let curr = num; for(let right = 0; right < arr.length; right++){ if(arr[right] === 0){ curr -= 1; }; while(curr < 0){ if(arr[left] === 0){ curr += 1; }; left += 1; }; max = Math.max(max, right - left + 1); }; return max; }; console.log(longestOnes(arr, num));
輸出
控制檯中的輸出為 −
6
廣告