剑指 Offer II 008. 和大于等于 target 的最短子数组
本题重点:滑动窗口
设置头和尾两个指针,就可以设置出一个长度可变的窗口
本题的原理:
然后麻烦的就还是那些边边角角的循环条件,最终代码是:
public class Solution {
public int MinSubArrayLen(int target, int[] nums) {
int left = 0,right = 0;
int sum = 0;
int MinLength = nums.Length;
if (nums.Sum()<target) return 0;
while(left<=right&&right<nums.Length&&left<nums.Length){
while(sum<target&&right<nums.Length&&left<nums.Length){
sum+=nums[right++];
}
MinLength = Math.Min(right-left+1,MinLength);
while(sum>=target){
sum -=nums[left++];
}
MinLength = Math.Min(right-left+1,MinLength);
}
return MinLength;
}
}
最终结果: