在整数数组中求乘积严格小于 k 的子数组数量
题目描述
给定一个整数数组 nums
和一个整数 k
,请你返回所有子数组的数量,这些子数组内的元素乘积严格小于 k
。
示例
示例 1:
输入:
nums = [10, 5, 2, 6]
k = 100
输出:
8
解释:乘积小于 100 的子数组有:
- [10], [5], [2], [6], [10, 5], [5, 2], [2, 6], [5, 2, 6]
示例 2:
输入:
nums = [1, 2, 3]
k = 0
输出:
0
解释:没有任何子数组的乘积小于 0。
解题分析
问题理解
题目要求计算所有子数组的乘积严格小于给定的 k
。对于一个包含 n 个元素的数组,子数组的数量为 O(n²),如果直接枚举所有子数组并计算它们的乘积,时间复杂度将会很高,达到 O(n²),在输入规模较大的情况下会导致超时。