Java教程

2022 -7-20 剑指offer-固定窗口

本文主要是介绍2022 -7-20 剑指offer-固定窗口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

剑指 Offer II 009. 乘积小于 K 的子数组

难度中等

给定一个正整数数组 nums和整数 k ,请找出该数组内乘积小于 k 的连续的子数组的个数。

 1     public int numSubarrayProductLessThanK(int[] nums, int k) {
 2         int index=0,sum=1,n=nums.length,ans=0;
 3         for (int i=0;i<n;i++){
 4             sum*=nums[i];
 5             if (sum<k){
 6                 ans+=(i-index+1);
 7             }else{
 8                 while (index<=i&&sum>=k){
 9                     sum/=nums[index];
10                     index++;
11                 }
12                 ans+=(i-index+1);
13             }
14         }
15         return ans;
16     }
17 }

思路:因为乘积只会越来越大,所以对于每一个为结尾的子数组,找到第一个满足条件的index即可。

这篇关于2022 -7-20 剑指offer-固定窗口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!