包含 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

更新於:03-Mar-2021

255 次瀏覽

開啟您的職業生涯

完成課程,獲得認證

開始
廣告
© . All rights reserved.