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
热门推荐
1 训练狗狗基础
2 怎么训练狗狗笑
3 怎么训练狗狗卧下
4 上海狗狗训练基地
5 训练狗狗排便
6 狗狗基础训练
8 如何训练狗狗装死
9 狗狗站姿训练
10 狗狗训练用品
11 训练狗狗吧
12 狗狗要怎么训练
13 怎么训练狗狗玩球
14 训练狗狗唤回
15 狗狗训练躺下
16 狗狗训练指令
17 狗狗的训练技巧
18 狗狗不好训练