Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ตรวจสอบ Subarray ผลรวมเป็นพหุคูณของ k (ขนาดอย่างน้อย 2) ใน JavaScript

ปัญหา

รับอาร์เรย์ arr และ target ตรวจสอบว่ามี subarray ต่อเนื่องขนาด ≥ 2 ที่ผลรวมเป็นพหุคูณของ target (n*k) หรือไม่

ตัวอย่าง

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

Subarray ทั้งหมด [23,2,6,4,7] ผลรวม 42 = 7*6 → true

โค้ดตัวอย่าง (Prefix Sum + Hash Map)

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

ผลลัพธ์

true