文章目录
- 题目介绍
- 解法
题目介绍
解法
和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;}
}