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

Các cách để đạt được một tổng cụ thể trong JavaScript

Vấn đề

Chúng tôi bắt buộc phải viết một hàm JavaScript lấy một mảng Số nguyên, arr, làm đối số đầu tiên và một số nguyên duy nhất, đích, làm đối số thứ hai.

Đối với mỗi Số nguyên trong mảng, hàm của chúng ta có thể gán ‘+’ hoặc ‘-’ cho nó.

Hàm của chúng ta sẽ tìm ra tổng số có bao nhiêu cách để gán ‘+’, ‘-’ để làm cho tổng các số nguyên của mảng bằng với tổng đích, target.

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

const arr = [1, 1, 1, 1, 1];
const target = 3;

Sau đó, đầu ra phải là -

const output = 5;

Giải thích đầu ra:

Bởi vì 5 cách là -

-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3

Ví dụ

Mã cho điều này sẽ là -

const arr = [1, 1, 1, 1, 1];
const target = 3;
const waysToSum = (arr = [], target = 1) => {
   const map = {};
   const find = (arr, target, i) => {
      let val = i + '->' + target;
      if(map[val] !== undefined){
         return map[val];
      };
      if(i === 0){
         if (target === 0 && arr[0] === 0) { return 2 }
         return arr[0] === target || arr[0] === -target ? 1 : 0
      };
      map[val] = find(arr, target + arr[i], i - 1) + find(arr, target - arr[i], i - 1);
      return map[val]
   };
   return find(arr, target, arr.length-1)
};
console.log(waysToSum(arr, target));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

5