包含 0 和 1 的 JavaScript 連續子陣列
問題
我們需要編寫一個 JavaScript 函式,它接收一個二進位制陣列 arr(僅包含 0 或 1 的陣列)。我們的函式應該返回陣列中由相同數量的 1 和 0 組成的連續子陣列的長度。
例如,如果輸入函式的內容為 −
const arr = [1, 0, 0, 1, 0, 1, 0, 0];
那麼輸出應該為 −
const output = 6;
輸出說明
陣列前 6 個元素是 1、0、0、1、0、1(三個 1 和三個 0)
示例
程式碼如下 –
const arr = [1, 0, 0, 1, 0, 1, 0, 0];
const findMaxLength = (arr = []) => {
const { length } = arr;
if (length < 2){
return 0
};
const map = new Map();
map.set(0, -1);
let sum = 0;
let max = 0;
for (var i = 0; i < length; i++) {
sum += arr[i] === 0 ? -1 : 1;
if (map.has(sum)) {
max = Math.max(max, i - map.get(sum));
} else {
map.set(sum, i);
};
};
return max;
};
console.log(findMaxLength(arr));程式碼說明
在這裡,我們將 0 視為 -1,1 視為 1,並計算不同視窗的總和,當總和為 0 時,我們就知道子陣列必須包含相同數量的 0 和 1。
輸出
控制檯中的輸出為 −
6
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
JavaScript
PHP