Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ผลิตภัณฑ์ของ subarray น้อยกว่าเป้าหมายใน JavaScript


ปัญหา

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