JavaScript 中具有所需和的二進位制子陣列


問題

我們需要編寫一個 JavaScript 函式,該函式將二進位制陣列 arr 作為第一個引數,將數字 target 作為第二個引數。

我們的函式應該對陣列 arr 中存在的子陣列的數量進行計數,其元素的總和等於 count。我們應該最終返回這個 count。

例如,如果函式的輸入是

輸入

const arr = [1, 0, 1, 0, 1];
const target = 2;

輸出

const output = 4;

輸出說明

因為所需的子陣列是

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

示例

 即時演示

const arr = [1, 0, 1, 0, 1];
const target = 2;
const countSubarrays = (arr = [], target = 1) => {
   const map = {}
   let sum = 0
   let count = 0
   for (const num of arr) {
      map[sum] = (map[sum] || 0) + 1
      sum += num
      count += map[sum - target] || 0
   }
   return count
};
console.log(countSubarrays(arr, target));

輸出

4

更新於: 2021-04-23

64 次瀏覽

啟動您的職業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.