ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของ Integers, arr เป็นอาร์กิวเมนต์แรกและ Integer เดียว กำหนดเป้าหมายเป็นอาร์กิวเมนต์ที่สองและอาร์กิวเมนต์แรก ฟังก์ชันของเราควรตรวจสอบว่ามีอาร์เรย์ย่อยต่อเนื่องที่มีขนาดอย่างน้อย 2 ตัวที่รวมผลคูณของ k หรือไม่ นั่นคือผลรวมสูงสุด n*k โดยที่ n สามารถเป็นจำนวนเต็มใดๆ ได้
เราจะคืนค่า จริง หากมี มิฉะนั้น เท็จ
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −
const arr = [23, 2, 6, 4, 7]; const target = 6;
จากนั้นผลลัพธ์ควรเป็น −
const output = true;
คำอธิบายผลลัพธ์:
เนื่องจาก [23, 2, 6, 4, 7] เป็นอาร์เรย์ย่อยแบบต่อเนื่องที่มีขนาด 5 และรวมกันได้มากถึง 42
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
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