ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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