[Leetcode] 713. Subarray Product Less Than K 解题报告
2018-02-07 22:56
375 查看
题目:
Your are given an array of positive integers
Count and print the number of (contiguous) subarrays where the product of all the elements in the subarray is less than
Example 1:
Note:
思路:
Two pointers问题:我们每次增加一个nums[end],然后从start开始,一旦发现[start, end]区间内的乘积大于k,就增加start。当[start, end]区间内的乘积小于k的时候,就会有(end - start + 1)个子区间符合条件。最后返回总的个数即可。算法的时间复杂度是O(n),空间复杂度是O(1)。
代码:
class Solution {
public:
int numSubarrayProductLessThanK(vector<int>& nums, int k) {
int count = 0, start = 0, product = 1;
for (int end = 0; end < nums.size(); ++end) {
product *= nums[end];
while (start <= end && product >= k) {
product /= nums[start];
++start;
}
count += (end - start + 1);
}
return count;
}
};
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.
思路:
Two pointers问题:我们每次增加一个nums[end],然后从start开始,一旦发现[start, end]区间内的乘积大于k,就增加start。当[start, end]区间内的乘积小于k的时候,就会有(end - start + 1)个子区间符合条件。最后返回总的个数即可。算法的时间复杂度是O(n),空间复杂度是O(1)。
代码:
class Solution {
public:
int numSubarrayProductLessThanK(vector<int>& nums, int k) {
int count = 0, start = 0, product = 1;
for (int end = 0; end < nums.size(); ++end) {
product *= nums[end];
while (start <= end && product >= k) {
product /= nums[start];
++start;
}
count += (end - start + 1);
}
return count;
}
};
相关文章推荐
- leetcode 713. Subarray Product Less Than K 连续子数组之积小于K + 移动窗口
- leetcode 713. Subarray Product Less Than K & leetcode 467. Unique Substrings in Wraparound String
- LeetCode 713. Subarray Product Less Than K(java)
- LeetCode-713:Subarray Product Less Than K (乘积小于K的子数组个数) -- medium
- LWC 55:713. Subarray Product Less Than K
- [leetcode] 152. Maximum Product Subarray 解题报告
- LeetCode Maximum Product Subarray 解题报告
- LeetCode: Maximum Product Subarray 解题报告
- LeetCode 152. Maximum Product Subarray 解题报告
- 713. Subarray Product Less Than K
- [leetcode] 363. Max Sum of Rectangle No Larger Than K 解题报告
- Leetcode:713.Subarray Product Less Than K
- [Leetcode] 363. Max Sum of Rectangle No Larger Than K 解题报告
- [LeetCode] Subarray Product Less Than K 子数组乘积小于K
- Leetcode 152-MaximumProductSubarray 解题报告
- LeetCode Subarray Product Less Than K
- leetcode 713 Subarray Product Less Than K
- [LeetCode]Product of Array Except Self,解题报告
- LeetCode 解题报告 Maximum Product Subarray
- leetcode 713. Subarray Product Less Than K