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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP