713. 乘积小于 K 的子数组

剑指 Offer II 009. 乘积小于 K 的子数组open in new window

Approach 1,前缀积

class Solution {
    public int numSubarrayProductLessThanK(int[] nums, int k) {
        int n = nums.length;
        int left = 0, right = 0;
        int cnt = 0;
        int multi = 1;
        while (left <= right && right < n) {
            multi = multi * nums[right];
            if (multi < k) {
                cnt += right-left+1;
                right++;
            } else {
                multi = multi / nums[left];
                if (left == right) {
                    right++;
                    left++;
                } else {
                    left++;
                    multi = multi / nums[right];
                }
            }
        }

        return cnt;       
    }
}
Last Updated:
Contributors: jesse