面试算法-130-乘积小于 K 的子数组

题目

给定一个正整数数组 nums和整数 k ,请找出该数组内乘积小于 k 的连续的子数组的个数。

示例 1:

输入: nums = [10,5,2,6], k = 100

输出: 8

解释: 8 个乘积小于 100 的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。

需要注意的是 [10,5,2] 并不是乘积小于100的子数组。

题目

java 复制代码
class Solution {
    public int numSubarrayProductLessThanK(int[] nums, int k) {
        int n = nums.length;
        int left = 0;
        int right = 0;
        int mul = 1;
        int count = 0;
        while (left <= right && right < n) {
            mul *= nums[right++];
            while (left <= right && mul >= k) {
                mul /= nums[left++];
            }
            if (left < right) {
                count += right - left;
            }
        }
        return count;
    }
}
相关推荐
KingRumn4 小时前
Linux信号之标准信号与实时信号
linux·算法
源代码•宸7 小时前
Leetcode—620. 有趣的电影&&Q3. 有趣的电影【简单】
数据库·后端·mysql·算法·leetcode·职场和发展
2301_800256117 小时前
地理空间数据库中的CPU 和 I/O 开销
数据库·算法·oracle
wanghowie8 小时前
01.07 Java基础篇|函数式编程与语言新特性总览
java·开发语言·面试
一个不知名程序员www8 小时前
算法学习入门---结构体和类(C++)
c++·算法
阿亮爱学代码10 小时前
Java 面试 (三)
面试·职场和发展
XFF不秃头10 小时前
力扣刷题笔记-旋转图像
c++·笔记·算法·leetcode
a努力。11 小时前
美团Java面试被问:Redis集群模式的工作原理
java·redis·后端·面试
王老师青少年编程11 小时前
csp信奥赛C++标准模板库STL案例应用3
c++·算法·stl·csp·信奥赛·lower_bound·标准模版库