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

Tổng mảng con có ít nhất hai phần tử 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 Số nguyên, arr, làm đối số đầu tiên và một Số nguyên duy nhất, nhắm mục tiêu làm đối số thứ hai và đầu tiên. Hàm của chúng ta nên kiểm tra xem có tồn tại một mảng con liên tục có kích thước ít nhất là 2 mà tổng lên đến bội số của k, nghĩa là, tổng lên đến n * k trong đó n có thể là bất kỳ số nguyên nào hay không.

Chúng tôi trả về true nếu nó tồn tại, trả về false nếu không.

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

const arr = [23, 2, 6, 4, 7];
const target = 6;

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

const output = true;

Giải thích đầu ra:

Bởi vì [23, 2, 6, 4, 7] là một mảng con liên tục có kích thước 5 và tổng lên đến 42.

Ví dụ

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

const arr = [23, 2, 6, 4, 7];
const target = 6;
const checkSubarraySum = (arr = [], target = 1) => {
   let sum = 0
   const hash = {}
   hash[0] = -1;
   for (let i = 0; i<arr.length; i++) {
      sum += arr[i]
      if (target!=0) sum %= target
      if ( hash[sum] !== undefined ) {
         if(i-hash[sum]>1) return true
      } else {
         hash[sum] = i
      }
   };
   return false;
};
console.log(checkSubarraySum(arr, target));

Đầu ra

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

true