【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;
    }
}
相关推荐
泉崎15 分钟前
11.7比赛总结
数据结构·算法
你好helloworld16 分钟前
滑动窗口最大值
数据结构·算法·leetcode
AI街潜水的八角1 小时前
基于C++的决策树C4.5机器学习算法(不调包)
c++·算法·决策树·机器学习
白榆maple1 小时前
(蓝桥杯C/C++)——基础算法(下)
算法
JSU_曾是此间年少1 小时前
数据结构——线性表与链表
数据结构·c++·算法
sjsjs112 小时前
【数据结构-合法括号字符串】【hard】【拼多多面试题】力扣32. 最长有效括号
数据结构·leetcode
此生只爱蛋2 小时前
【手撕排序2】快速排序
c语言·c++·算法·排序算法
咕咕吖3 小时前
对称二叉树(力扣101)
算法·leetcode·职场和发展
九圣残炎3 小时前
【从零开始的LeetCode-算法】1456. 定长子串中元音的最大数目
java·算法·leetcode
lulu_gh_yu3 小时前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法