标签: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