参考链接:209.长度最小的子数组
注意:本题的子数组是连续的,一串一串的
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int i,j,minDis=99999999;int sum=0;//j控制子数组末尾,i控制子数组开头位置for(j=0,i=0;j<nums.size();){sum+=nums[j];while(sum>=target){int len=j-i+1;//得到当前ij下标之间的距离minDis=min(minDis,len);//当前长度和已知最小长度之间获取较小值sum-=nums[i];//因为while条件是sum>=target,所以直接从ij连续数组中减去头部元素,试图获取最短子数组i++;//头部位置i往后挪}++j;}if(minDis==99999999){return 0;}return minDis;}
};