![]()
求解代码
publicstaticintminSubArrayLen(inttarget,int[]nums){// 获取原数组长度intn=nums.length;int[]preSum=newint[n+1];preSum[0]=0;for(inti=1;i<=n;i++){preSum[i]=preSum[i-1]+nums[i-1];}intleft=0;intright=1;intans=Integer.MAX_VALUE;while(right<preSum.length){// 当前窗口的和 >= targetif(preSum[right]-preSum[left]>=target){// 更新最小长度ans=Math.min(right-left,ans);// 既然当前窗口已经满足条件,尝试去掉左边元素,看能否找到更短的窗口left++;}elseif(preSum[right]-preSum[left]<target){// 当前窗口不满足条件,和太小了// 右指针右移,将更多元素包含进窗口right++;}}returnans==Integer.MAX_VALUE?0:ans;}