weekly contest 55 第三题 Subarray Product Less Than K
来源:互联网 发布:手机淘宝内部优惠券 编辑:程序博客网 时间:2024/05/17 07:50
题目
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 = 100Output: 8Explanation: 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.
分析
比赛的时候想试试O(N*N)结果过了,后来数据更新了,我又重新写了个O(N)的
记得自己以前总结过 substring , subarray的题目很多时候可以用滑动窗口(子序列不行)
那么我们先来看看比较暴力的方法吧
先看例子
nums = [10, 5, 2, 6], k = 100
我们从左到右每次读到一个就枚举前面可以达到最长的然后 结果加上长度
第一次
10
ans = 1
5,10( 5可以,5,10可以)
ans=1+2
2,5( 2可以,2,5可以)
ans = 1 + 2 + 2
6,2,5( 6可以 , 2,6可以,2,5,6可以)
ans = 1+2 +2 +3 =8
这样做是O(N*N)但是我们或许不需要这么做
我们可以用two poionts + sliding window 来解决这个问题
还是之前的例子
我们定义起点为0
开始
10
ans = 1
10,5
ans = 1+2
10,5,2不可以但是我们直接除10并且起点++
代码
class Solution {public: int numSubarrayProductLessThanK(vector<int>& nums, int k) { if( k == 0 ) return 0 ; int start =0 ; int val = 1 ; int ans =0 ; for( int i =0 ; i< nums.size() ; i++){ val *= nums[i]; while( val >= k && start <= i ){ val/=nums[start]; start ++; } ans+= i-start+1; } return ans ; }};
时间复杂度O(N)
空间复杂度O(N)
阅读全文
0 0
- weekly contest 55 第三题 Subarray Product Less Than K
- LWC 55:713. Subarray Product Less Than K
- Leetcode:713.Subarray Product Less Than K
- 713.Subarray Product Less Than K
- leetcode 713 Subarray Product Less Than K
- 713. Subarray Product Less Than K
- leetCode-Subarray Product Less Than K
- 713. Subarray Product Less Than K
- Add to List 713. Subarray Product Less Than K
- Subarray Product Less Than K问题及解法
- LeetCode-713:Subarray Product Less Than K (乘积小于K的子数组个数) -- medium
- LeetCode Weekly Contest 56 第三题
- find a subarray that contains the largest sum, constraint that sum is less than k
- LeetCode Weekly Contest 56 Find K-th Smallest Pair Distance
- weekly contest 55 第二题Minimum ASCII Delete Sum for Two Strings
- LeetCode Weekly Contest 25
- leetcode weekly contest #26
- leetcode weekly contest #27
- Spring boot简介
- 关于向 OutputStream 中直接写入 int 的细节问题
- JAVA引用和C语言指针的探究
- 关于博客账号迁移
- chmod问题解决0-撤销执行权限
- weekly contest 55 第三题 Subarray Product Less Than K
- Hadoop2.7.3完全分布式集群搭建和测试
- Retrofit学习总结
- JS-Jquery 同步校验两次密码是否相同
- concat连接字符串在字段前后增加字符串
- 共享经济来势汹汹读懂了你将是下一个土豪
- java 用“*”在控制台打印出一个近似圆
- Django中的全局配置
- leetcode