ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลข arr เป็นอาร์กิวเมนต์แรก และตัวเลข เป้าหมาย เป็นอาร์กิวเมนต์ที่สอง
ฟังก์ชันของเราควรจะนับและส่งคืนจำนวนอาร์เรย์ย่อย (ต่อเนื่องกัน) โดยที่ผลคูณขององค์ประกอบทั้งหมดในอาร์เรย์ย่อยน้อยกว่าเป้าหมาย
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ
ป้อนข้อมูล
const arr = [10, 5, 2, 6]; const target = 100;
ผลผลิต
const output = 8;
คำอธิบายผลลัพธ์
อาร์เรย์ย่อย 8 รายการที่มีผลิตภัณฑ์น้อยกว่า 100 คือ −
[10], [5], [2], [6], [10, 5], [5, 2], [2, 6], [5, 2, 6].
โปรดทราบว่า [10, 5, 2] ไม่นับรวมเนื่องจากผลคูณของ 100 มีค่าไม่น้อยกว่า k อย่างเคร่งครัด
ตัวอย่าง
ต่อไปนี้เป็นรหัส -
const arr = [10, 5, 2, 6]; const target = 100; const countSubarrays = (arr = [], target = 1) => { let product = 1 let left = 0 let count = 0 for (let right = 0; right < arr.length; right++) { product *= arr[right] while (left <= right && product >= target) { product /= arr[left] left += 1 } count += right - left + 1 } return count }; console.log(countSubarrays(arr, target));
ผลลัพธ์
8