当前位置 博文首页 > zhaohoutao的博客:LeetCode-713 乘积小于k的子数组

    zhaohoutao的博客:LeetCode-713 乘积小于k的子数组

    作者:[db:作者] 时间:2021-09-03 15:11

    乘积小于k的子数组

    在这里插入图片描述
    使用双指针的方法:

    class Solution {
    public:
        int numSubarrayProductLessThanK(vector<int>& nums, int k) {
            //使用双指针的方法,又连续的字样就想到双指针或者是动态规划的算法
            //使用回溯法应该也可以试一下,总体来说还是需要进行滑动窗口的控制
            int len=nums.size();
            if(k<=1)
                return 0;
            int left=0;
            int sum=1;
            int result=0;
            for(int i=0;i<len;++i)
            {
                sum=sum*nums[i];
                while(sum>=k)//如果当前的乘积大于k,那么就需要将left向前移动
                {
                    sum=sum/nums[left];
                    ++left;              
                }
                result=result+i-left+1; 
            }
            return result;
        }
    };
    

    在这里插入图片描述

    cs