天天看點

[LeetCode] 209. Minimum Size Subarray Sum

思路:

一個類似維護視窗的思路. 先移動視窗右邊, 每次都加一個元素到臨時和中, 然後如果這個臨時和大于s了, 就把視窗左邊起點向後一個一個挪, 直到臨時和小于s即可. 當中不停實時記錄最短距離.

int minSubArrayLen(int s, vector<int>& nums) {
    int start = , sum = , minlen = INT_MAX;
    for (int i = ; i < nums.size(); i++) {
        sum += nums[i];
        while (sum >= s) {
            minlen = min(minlen, i - start + );
            sum -= nums[start++];
        }
    }
    return minlen == INT_MAX ?  : minlen;
}