209. 長度最小的子數組 - 力扣(LeetCode)
給定一個含有?n
?個正整數的數組和一個正整數?target
?。
找出該數組中滿足其總和大于等于?target
?的長度最小的?連續子數組?[numsl, numsl+1, ..., numsr-1, numsr]
?,并返回其長度。如果不存在符合條件的子數組,返回?0
?。
示例 1:
輸入:target = 7, nums = [2,3,1,2,4,3]
輸出:2
解釋:子數組?[4,3]
?是該條件下的長度最小的子數組。
示例 2:
輸入:target = 4, nums = [1,4,4] 輸出:1
示例 3:
輸入:target = 11, nums = [1,1,1,1,1,1,1,1] 輸出:0
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {size_t left = 0, right = 0;int sum = 0;size_t len = INT_MAX;while(right < nums.size()){sum += nums[right];//滑動窗口向右走while( sum >= target)//判斷{len = min(len, right - left + 1);//更新結果sum -= nums[left];left++;//出窗口}right++;}return len == INT_MAX ? 0 : len;}
};