JavaScript 中子数组的乘积略小于目标

问题

我们需要编写一个 JavaScript 函数,它接受一个数字数组 arr 作为第一个参数,一个数字 target 作为第二个参数。

我们的函数应该计算并返回(连续)子数组的数量,其中子数组中所有元素的乘积小于目标。

例如,如果函数的输入是

输入

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

const target = 100;

输出

const output = 8;

输出说明

乘积小于 100 的 8 个子数组是 -

[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

以上是 JavaScript 中子数组的乘积略小于目标 的全部内容, 来源链接: utcz.com/z/317377.html

回到顶部