一:题目

二:上码
class Solution {
public:/**思路:1.滑动窗口解法1>:确定窗口内是什么2>:确定窗口的起始位置3>:确定窗口的终止位置2.窗口:也就是我们的求的连续字符串的和3.窗口的起始位置: 窗口的起始位置最先是我们数组的起始位置,当窗口内连续数组的和大于target的时候,    起始位置就需要往前移动来缩小我们窗口的大小4.窗口的终止位置: 窗口的终止位置就是我们的数组的下标*/int minSubArrayLen(int target, vector<int>& nums) {int i = 0;//起始位置int length = 0;//窗口的大小int ans = INT_MAX;int sum = 0;for (int j = 0; j < nums.size(); j++) {sum += nums[j];while (sum >= target) {//要开始移动我们窗口的起始位置length = (j-i+1);//这里加一是因为 我们的j是从0开始的ans = ans > length ?length :ans;//开始缩小我们的窗口sum -= nums[i++];}            }        return ans == INT_MAX ? 0 : ans;}
};// class Solution {
// public:
//     /**
//         思路:
//             1.暴力解法
//                 两层for循环,记录下来 >=target 的字符串长度。    
//             2.超时   
//     */
//     int minSubArrayLen(int target, vector<int>& nums) {//             int length = nums.size();
//             int ans = INT_MAX;//             for (int i = 0; i < length; i++) {
//                  vector<int> v;
//                 for (int j = i; j < nums.size(); j++) {
//                     v.push_back(nums[j]);
//                     int sum = accumulate(v.begin(),v.end(),0);
//                     if(sum >= target) {
//                         if (ans > v.size()) {
//                             ans = v.size();
//                         } else {
//                             break;
//                         }
//                     }//                 }
//             }//             if(ans == INT_MAX) return 0;//             return ans;
//     }
// };