題目:209. 長度最小的子數組 - 力扣(LeetCode)
給定一個含有?n
?個正整數的數組和一個正整數?target
?。找出該數組中滿足其總和大于等于?target
?的長度最小的?連續子數組?[numsl, numsl+1, ..., numsr-1, numsr]
?,并返回其長度。如果不存在符合條件的子數組,返回?0
?。
騰訊微信搜索團隊一面的題,一模一樣,用兩個指針記錄滑動窗口的頭和尾巴,sum記錄和,當sum大于等于target的時候,記錄最小長度,將滑動窗口縮短至sum小于target
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int sum = 0, ans = INT_MAX, end = 0;for (int start = 0; end < nums.size(); ++end) {sum += nums[end];while (sum >= target) {ans = min(ans, end - start + 1);sum -= nums[start];++start;}}return ans == INT_MAX ? 0 : ans;}
};