Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Số lượng mảng con có tích nhỏ hơn mục tiêu trong JavaScript

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một mảng số arr làm đối số thứ nhất và một số target làm đối số thứ hai.

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

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ó tích nhỏ hơn 100 là:

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

Lưu ý [10, 5, 2] không được tính vì tích bằng 100 không nhỏ hơn chặt k.

Ví dụ

Dưới đâ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