【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;
    }
}
相关推荐
偷偷的卷4 小时前
【算法笔记 11】贪心策略六
笔记·算法
ZPC82105 小时前
FPGA 部署ONNX
人工智能·python·算法·机器人
_w_z_j_5 小时前
爱丽丝的人偶
算法
老前端的功夫6 小时前
Vue2中key的深度解析:Diff算法的性能优化之道
前端·javascript·vue.js·算法·性能优化
yongui478346 小时前
基于深度随机森林(Deep Forest)的分类算法实现
算法·随机森林·分类
是苏浙7 小时前
零基础入门C语言之C语言实现数据结构之单链表经典算法
c语言·开发语言·数据结构·算法
橘颂TA7 小时前
【剑斩OFFER】算法的暴力美学——点名
数据结构·算法·leetcode·c/c++
MATLAB代码顾问8 小时前
多种时间序列预测算法的MATLAB实现
开发语言·算法·matlab
高山上有一只小老虎9 小时前
字符串字符匹配
java·算法
愚润求学10 小时前
【动态规划】专题完结,题单汇总
算法·leetcode·动态规划