面试算法-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;
    }
}
相关推荐
小鸡吃米…6 小时前
Python编程语言面试问题一
python·面试
夏鹏今天学习了吗7 小时前
【LeetCode热题100(73/100)】买卖股票的最佳时机
算法·leetcode·职场和发展
gaosushexiangji7 小时前
一项基于粒子图像测速(PIV)速度场反演的压力场重构技术
人工智能·算法
Voyager_47 小时前
算法学习记录17——力扣“股票系列题型”
学习·算法·leetcode
雨大王5127 小时前
汽车涂装工艺的智能化与绿色化升级:技术、案例与趋势
算法
XFF不秃头7 小时前
【力扣刷题笔记-在排序数组中查找元素的第一个和最后一个位置】
c++·笔记·算法·leetcode
hweiyu007 小时前
数据结构:布隆过滤器
数据结构
yoyo君~7 小时前
FAST-LIVO2 深度技术解析
算法·计算机视觉·机器人·无人机
我也要当昏君7 小时前
时间复杂度
算法·数学建模
超级大福宝7 小时前
C++ 中 unordered_map 的 at() 和 []
数据结构·c++