class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @param target int整型 
     * @return int整型
     */
    int minSubarray(vector<int>& nums, int target) {
        // write code here
        if(nums.size()==0)
            return 0;
        //使用滑动窗口法
        int slow=0;
        int fast=0;
        int sum=0;//当前窗口的总和
        int minL=nums.size();
        int curL=0;//当前窗口长度
        while(fast<=nums.size()-1||sum>target)//快指针到达末尾,并且区间总值小于sum时才退出循环
        {
            if(sum<target||fast==slow)//窗口值大小不足或者窗口长度最小时,移动快指针
            {
                fast++;
                curL++;
                if(fast<=nums.size()-1)
                    sum+=nums[fast];
                continue;
            }
            else 
            {
                if(curL<minL)
                {
                    minL=curL;
                }
                sum-=nums[slow++];//缩小窗口
                --curL;
                continue;
            }
        }
        return minL;
        
    }
};

使用滑动窗口法避免了回溯