209. 长度最小的子数组

209. 长度最小的子数组


题目链接:209. 长度最小的子数组

代码如下:

// //暴力法超时
// class Solution {
// public:
//     int minSubArrayLen(int target, vector& nums) {
//         int num=INT32_MAX;
//         for(int i=0;i
//         {
//             int tempnum=0,sum=0;

//             for(int j=i;j
//             {      
//                 sum+=nums[j];
//                 tempnum++;
//                 if(sum>=target)
//                 {
//                     if(tempnum
//                         num=tempnum;
//                     break;
//                 }
//             }
//         }

//         return num==INT32_MAX?0:num;
//     }
// };

//滑动窗口法
class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) 
    {
        int num=INT32_MAX;
        int sum=0;
        int i=0;//滑动窗口的起始位置

        for(int j=0;j<nums.size();j++)
        {
            sum+=nums[j];

            while(sum>=target)
            {
                int tempNum=j-i+1;

                if(tempNum<num)
                    num=tempNum;

                sum-=nums[i];
                i++;//起始位置后移
            }
        }
        return num==INT32_MAX?0:num;
    }
};

你可能感兴趣的:(leetcode,c++)