思路:
一個類似維護視窗的思路. 先移動視窗右邊, 每次都加一個元素到臨時和中, 然後如果這個臨時和大于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;
}