长度最小的子数组(没做出来)
题目要求:寻找一个数组中满足大于等于目标要求的最小子数组
解题思路:返回结果可能是不存在,所以需要定义一个合适的初始值,可以使用java的最大数Integer.MAX_VALUE,然后使用滑动窗口寻找满足条件的子数组,这时还需要对之前的数进行减去,避免子数组中依然含有满足条件的子数组,同时还要不断的进行最小子数组的个数计算
代码如下: class Solution { public int minSubArrayLen(int target, int[] nums) { int left = 0; int right = 0; int result = Integer.MAX_VALUE; int sum = 0; while(right<nums.length){ sum+=nums[right]; while(sum>=target){ result = Math.min(result, right - left + 1); sum-=nums[left]; left++; } right++; } return result == Integer.MAX_VALUE ? 0 : result; } }
最后一个return语句,如果纯在大于等于目标值的数,原始result一定会更改,所以如果没有更改则表面不含满足条件子数组,直接返回0.