|
从今天开始,在LeetCode上进行每日一题的训练,并期待来自坛友的监督与交流。今日的题目如下:
713. 乘积小于 K 的子数组
给定一个整数数组 `nums` 和一个整数 `k`,请计算乘积小于 `k` 的连续子数组的个数。
示例 1:
[ol]输入:nums = [10,5,2,6], k = 100输出:8解释:8 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。 需要注意的是 [10,5,2] 并不是乘积小于 100 的子数组。
[/ol]
示例 2:
[ol]输入:nums = [1,2,3], k = 0输出:0
[/ol]
下面是代码实现:
```go
func numSubarrayProductLessThanK(nums []int, k int) int {
front := 0
back := 0
sum := 1
result := 0
// 初始化变量
p := 1
j := 0
// 外层循环处理所有子数组
for front = k {
// 减少当前窗口长度
p /= nums[j]
j++
}
// 更新结果
res += i - j + 1
}
return res
}
```
通过这个改进版本的代码,我们可以快速地解决这个问题。希望这个回答对你有所帮助! |
|