Computer >> Máy Tính >  >> Lập trình >> Javascript

Sản phẩm của mảng con chỉ ít hơn đích trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng số, arr, làm đối số đầu tiên và một số, đích, làm đối số thứ hai.

Hàm của chúng ta phải đếm và trả về số lượng mảng con (liền kề) trong đó tích của tất cả các phần tử trong mảng con nhỏ hơn đích.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

const arr = [10, 5, 2, 6];
const target = 100;

Đầu ra

const output = 8;

Giải thích đầu ra

8 mảng con có sản phẩm nhỏ hơn 100 là -

[10], [5], [2], [6], [10, 5], [5, 2], [2, 6], [5, 2, 6].

Lưu ý rằng [10, 5, 2] không được bao gồm vì sản phẩm của 100 không hoàn toàn nhỏ hơn k.

Ví dụ

Sau đây là mã -

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

Đầu ra

8