码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 713. Subarray Product Less Than K

时间:2019-03-29 14:46:24      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:you   pre   ble   amp   tle   pointer   i++   导致   max   

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

标签:you   pre   ble   amp   tle   pointer   i++   导致   max   

原文地址:https://www.cnblogs.com/rookielet/p/10620886.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!