自学内容网 自学内容网

力扣 713.乘积小于k的子数组

文章目录

题目介绍

在这里插入图片描述

解法

和209.长度最小的子数组思路大致相同。
思路:如果从l到r这一段的乘积是小于k的,那么[l,r]、[l+1,r]….[r,r]这些子数组都是满足乘积小于k的,一共有r-l+1个。

class Solution {
    public int minSubArrayLen(int s, int[] nums) {
        int left = 0;
        int sum = 0;
        int result = Integer.MAX_VALUE;   //java 中整数类型 int 的最大值常量或者初始化为nums.length+1
        // int result = nums.length+1;
        for (int right = 0; right < nums.length; right++) {
            sum += nums[right];
            // 动态调节滑动窗口的起始位置
            while (sum >= s) {
                result = Math.min(result, right - left + 1);
                sum -= nums[left++];
            }
        }
// 如果result没有被赋值的话,就返回0,说明没有符合条件的子序列
        return result == Integer.MAX_VALUE ? 0 : result;
    }
}

原文地址:https://blog.csdn.net/qq_51352130/article/details/142249223

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!