面试算法-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;
    }
}
相关推荐
爱coding的橙子6 分钟前
每日算法刷题Day27 6.9:leetcode二分答案2道题,用时1h20min
算法·leetcode·职场和发展
GalaxyPokemon17 分钟前
LeetCode - 3. 无重复字符的最长子串
算法·哈希算法·散列表
a.30226 分钟前
C++ 时间处理指南:深入剖析<ctime>库
数据结构·c++·算法
亮亮爱刷题35 分钟前
算法刷题-回溯
算法
Neil今天也要学习1 小时前
永磁同步电机无速度算法--自适应龙贝格观测器
算法
算AI3 小时前
AI辅助编程:常用的7种Prompt模式
人工智能·算法
TY-20253 小时前
机器学习算法_决策树
算法·决策树·机器学习
天天摸鱼的java工程师3 小时前
八年 Java 开发手记:6 大锁类型深度解析,覆盖 99% 并发编程场景
java·后端·面试
寒山李白3 小时前
Spring Boot 常用注解面试题深度解析
java·spring boot·面试·注解
liang_jy3 小时前
Java this
java·面试