力扣 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)!