暴力解法:
测试通过✅提交超时❌
class Solution {public int minSubArrayLen(int target, int[] nums) {//暴力解法int sum=0;int subLength=0;int result=Integer.MAX_VALUE;int len=nums.length;for(int i=0;i<len;i++){//起始位置sum=0;for(int j=i;j<len;j++){//终止位置sum+=nums[j];if(sum>=target){subLength=j-i+1;//取子序列的长度result=result<subLength?result:subLength;break;}}}return result==Integer.MAX_VALUE?0:result;}
}
- 时间复杂度:O(n^2)
- 空间复杂度:O(1)
滑动窗口解法
class Solution {public int minSubArrayLen(int target, int[] nums) {//滑动窗口解法int len=nums.length;int sum=0;int subLength=0;int result=Integer.MAX_VALUE;int i=0;for(int j=0;j<len;j++){sum+=nums[j];while(sum>=target){subLength=j-i+1;result=result<subLength?result:subLength;sum-=nums[i++];}}return result==Integer.MAX_VALUE?0:result;}}
测试通过✅提交通过✅
时间复杂度:O(n)
空间复杂度:O(1)