LeetCode 713. Subarray Product Less Than K

Posted rookielet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 713. Subarray Product Less Than K相关的知识,希望对你有一定的参考价值。

Problem Description:

Your are given an array of positive integers nums.

Count and print the number of (contiguous) subarrays where the product of all the elements in the subarray is less than k.

题解:

很快想到了two pointer的解法,但是一直被corner case困住。

两个典型的case

[1,2,3]

0

这个情况是可能导致j < i,所以要加上j= Math.max(i, j)

还有

[1,1,1,8,1,1,1,1,1,1,1,1,1]

5

除以8可能导致prod = 0,仅仅当i < j的时候才能做除法

class Solution {
    public int numSubarrayProductLessThanK(int[] nums, int k) {
        int prod = 1;
        int res = 0;
        for(int i = 0, j = 0; i < nums.length; i++) {
            j = Math.max(i, j);
            while(j < nums.length && prod * nums[j] < k) {
                prod *= nums[j++];
            }
            res += j - i;
            if(i < j) prod /= nums[i];
        }
        return res;
    }
}

 

以上是关于LeetCode 713. Subarray Product Less Than K的主要内容,如果未能解决你的问题,请参考以下文章

*Leetcode 713. 乘积小于 K 的子数组

713. Subarray Product Less Than K

leetcode-713 乘积小于k的数组

[Leetcode] Maximum Subarray

[LeetCode]Maximum Subarray

#Leetcode# 53. Maximum Subarray