0
点赞
收藏
分享

微信扫一扫

剑指 Offer II 009. 乘积小于 K 的子数组 (双指针)

以沫的窝 2022-01-12 阅读 56

[题目链接](剑指 Offer II 009. 乘积小于 K 的子数组 - 力扣(LeetCode) (leetcode-cn.com))

思路

  • 采用双指针,左指针右指针一开始都指向数组第一个元素的位置

  • 子数组个数:r-l+1(right指针到left指针之间子数组的个数)

代码

class Solution {
    public int numSubarrayProductLessThanK(int[] nums, int k) {
        int l = 0;
        int sum = 1;
        int count = 0;
        for(int r = 0; r < nums.length; r++) {
            sum *= nums[r];
            while(sum >= k && l <= r) {
                sum /= nums[l++];
            }
            count +=  r >= l ? r - l + 1 : 0; //(r-l+1表示r到l之间子数组的个数)
        }
        return count;
    }
}
举报

相关推荐

0 条评论