面试算法-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;
    }
}
相关推荐
颜酱12 分钟前
从经典问题入手,吃透动态规划核心(DP五部曲实战)
前端·javascript·算法
WBluuue27 分钟前
AtCoder Beginner Contest 438(ABCDEF)
c++·算法
Murphy_3131 分钟前
从根上了解一下复指数
算法
Run_Teenage31 分钟前
Linux:理解IO,重定向
linux·运维·算法
你撅嘴真丑41 分钟前
素数对 与 不吉利日期
算法
多米Domi01143 分钟前
0x3f 第20天 三更24-32 hot100子串
java·python·算法·leetcode·动态规划
wzfj123451 小时前
Opaque Pointer / Incomplete Type
c++·算法·c
冰西瓜6001 小时前
贪心(四)——拟阵 算法设计与分析 国科大
算法·贪心算法
阿拉伯柠檬1 小时前
传输层协议TCP(二)
linux·服务器·网络·网络协议·tcp/ip·面试
optimistic_chen1 小时前
【Redis 系列】常用数据结构---SET类型
linux·数据结构·数据库·redis·set·数据类型·命令行