解决:初始的时候i、j都在0。用j往后累加cmp遍历,发现大于s的时候,i往右移动,不断更新cmp,小的时候j需要往右移动。
//双指针需要知道相加大的时候怎么移,小的时候怎么移,比如三数之和那道题。
class Solution {
public:
int minSubArrayLen(int s, vector<int> &nums) {
int i = 0, j = 0, cmp = 0, res = nums.size() + 1;//注!!比较的是小的,所以初始化为大。
while (j < nums.size()) {
cmp += nums[j];
while (cmp >= s) {
res = min(res, j - i + 1);
cmp -= nums[i];
i++;
}
j++;
}
return res == nums.size() + 1 ? 0 : res;
}
};