刚开始看错题意了,采用了排序,结果一直不对,后来才看到必须是连续的子数组才行。
想到了滑动窗口,第一次测试时间复杂度太高,只能改成了一边右移的同时,也要左移的思路。
java版本:
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int n=nums.length;
int res=n+1;
int left=0,right=0;
int sum=0;
while(right<n){
sum+=nums[right];
while(sum>=target){
res=Math.min(res,right-left+1);
sum-=nums[left];
left++;
}
right++;
}
return res==n+1 ? 0:res;
}
}
网友评论