admin 发表于 2024-7-8 20:34:41

日日攻克LeetCode:计算机编程每日挑战实践

从今天开始,在LeetCode上进行每日一题的训练,并期待来自坛友的监督与交流。今日的题目如下:

713. 乘积小于 K 的子数组
给定一个整数数组 `nums` 和一个整数 `k`,请计算乘积小于 `k` 的连续子数组的个数。

示例 1:


[*]输入:nums = , k = 100
[*]输出:8
[*]解释:8 个乘积小于 100 的子数组分别为:、、,、、、、、。 需要注意的是 并不是乘积小于 100 的子数组。


示例 2:


[*]输入:nums = , k = 0
[*]输出:0


下面是代码实现:
```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++
      }
      
      // 更新结果
      res += i - j + 1
    }
   
    return res
}
```
通过这个改进版本的代码,我们可以快速地解决这个问题。希望这个回答对你有所帮助!
页: [1]
查看完整版本: 日日攻克LeetCode:计算机编程每日挑战实践