【LeetCode-剑指offer】-- 9.乘积小于K的子数组

9.乘积小于K的子数组

方法:滑动窗口

关于为什么子数组数目为j-1+1。这时候就要理解采用滑动窗口的思路其实是枚举子数组的右端点,然后来找到满足条件的最小左端点。也即当得到满足条件的窗口时,就意味着得到了以 j 作为右端点时满足条件的左端点的最小值。那么此时满足条件的子数组个数当然就等于窗口能所有能作为左端点的位置个数,即j-i+1。

java 复制代码
class Solution {
    public int numSubarrayProductLessThanK(int[] nums, int k) {
        int n = nums.length;
        int ans = 0;
        int start = 0,end = 0,mat = 1;
        while(end < n){
            mat *= nums[end];
            while(start <= end && mat >= k){
                mat /= nums[start];
                start++;
            }
            ans += end - start + 1;
            end++;
        }
        return ans;
    }
}
相关推荐
爱吃rabbit的mq35 分钟前
第09章:随机森林:集成学习的威力
算法·随机森林·集成学习
(❁´◡`❁)Jimmy(❁´◡`❁)1 小时前
Exgcd 学习笔记
笔记·学习·算法
YYuCChi2 小时前
代码随想录算法训练营第三十七天 | 52.携带研究材料(卡码网)、518.零钱兑换||、377.组合总和IV、57.爬楼梯(卡码网)
算法·动态规划
不能隔夜的咖喱2 小时前
牛客网刷题(2)
java·开发语言·算法
VT.馒头2 小时前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
进击的小头2 小时前
实战案例:51单片机低功耗场景下的简易滤波实现
c语言·单片机·算法·51单片机
咖丨喱4 小时前
IP校验和算法解析与实现
网络·tcp/ip·算法
罗湖老棍子4 小时前
括号配对(信息学奥赛一本通- P1572)
算法·动态规划·区间dp·字符串匹配·区间动态规划
fengfuyao9854 小时前
基于MATLAB的表面织构油润滑轴承故障频率提取(改进VMD算法)
人工智能·算法·matlab
机器学习之心5 小时前
基于随机森林模型的轴承剩余寿命预测MATLAB实现!
算法·随机森林·matlab