Computer >> Máy Tính >  >> Lập trình >> Javascript

Các mảng con nhị phân với tổng mong muốn trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng nhị phân, arr, làm đối số đầu tiên và một số, đích, làm đối số thứ hai.

Hàm của chúng ta được coi là đếm số lượng mảng con tồn tại trong mảng arr, tổng các phần tử của chúng bằng số đếm. Cuối cùng chúng ta cũng nên trả lại số lượng này.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

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

Đầu ra

const output = 4;

Giải thích đầu ra

Bởi vì các mảng con mong muốn là:

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

Ví dụ

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));

Đầu ra

4