Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tổng mảng con liên tiếp ít nhất 2 phần tử trong JavaScript


Vấn đề

Cần viết hàm JS nhận mảng số nguyên arr và số nguyên target. Kiểm tra xem có tồn tại mảng con liên tiếp kích thước ≥ 2 có tổng bằng bội số của target (tức n*target với n bất kỳ). Trả về true nếu có, false nếu không.

Ví dụ:

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

Kết quả:

const output = true;

Giải thích:

Vì [23, 2, 6, 4, 7] là mảng con liên tiếp kích thước 5 tổng = 42 = 7*6.

Ví dụ

Mã thực hiện:

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

Kết quả

Kết quả in ra console:

true