解题思路
1、指针初始化
2、start指针和end指针同时指向首位数
3、判断数组中的元素个数
4、end指针移动,计算移动后sum
5、判断sum是否大于s,如果大于输出ans,同时start指针移动到下一位,
6、遍历完成后输出结果

代码

class Solution {
public:
int minSubArrayLen(int s, vector<int>& nums) {
//双指针法
//实例化
int n=nums.size();
//只有一个元素
if(n==0)
{
return 0;
}
//多个元素
//初始化对象
int ans =INT_MAX;
int start=0;
int end=0;
int sum=0;
while(end<n)
{
sum +=nums[end];//让尾指针遍历并相加
//判断sum是否大于s
while(sum>=s)
{
ans=min(ans,end-start+1);//寻找最小的数组
sum -=nums[start];//初始指针移动1位后的和
start++;
}
end++;
}
return ans==INT_MAX?0:ans;
}