我是靠谱客的博主 凶狠嚓茶,最近开发中收集的这篇文章主要介绍713. Subarray Product Less Than K**713. Subarray Product Less Than K**,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
713. Subarray Product Less Than K**
https://leetcode.com/problems/subarray-product-less-than-k/
题目描述
Your are given an array of positive integers nums
.
Count and print the number of (contiguous) subarrays where the product of all the elements in the subarray is less than k
.
Example 1:
Input: nums = [10, 5, 2, 6], k = 100
Output: 8
Explanation: The 8 subarrays that have product less than 100 are: [10], [5], [2], [6], [10, 5], [5, 2], [2, 6], [5, 2, 6].
Note that [10, 5, 2] is not included as the product of 100 is not strictly less than k.
Note:
0 < nums.length <= 50000
.0 < nums[i] < 1000
.0 <= k < 10^6
.
C++ 实现 1
使用滑动窗口. 注意两点:
k <= 1
时需要考虑;- 对于
[j, ... i]
范围内的元素, 满足条件的数组个数为i + 1 - j
. 比如[A, B, C]
, 如果j = 0, i = 2
, 那么从C
开始, 只能组成[C]
,[B, C]
,[A, B, C]
三个符合题意的数组,[A, C]
不符合题意, 不连续.
class Solution {
public:
int numSubarrayProductLessThanK(vector<int>& nums, int k) {
if (k <= 1) return 0;
int count = 0, prod = 1, j = 0;
for (int i = 0; i < nums.size(); ++ i) {
prod *= nums[i];
while (prod >= k) prod /= nums[j++];
count += i - j + 1;
}
return count;
}
};
最后
以上就是凶狠嚓茶为你收集整理的713. Subarray Product Less Than K**713. Subarray Product Less Than K**的全部内容,希望文章能够帮你解决713. Subarray Product Less Than K**713. Subarray Product Less Than K**所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复