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