classSolution { public: intminSubArrayLen(int target, vector<int>& nums){ // 左指针 l, 右指针 r, 当前窗口的和 sum, 最终答案 ans 初始化为 INT_MAX int l = 0, r = 0, sum = 0, ans = INT_MAX; for (r = 0; r < nums.size(); r++) { sum += nums[r];
// 如果当前窗口的和 sum 大于或等于 target,尝试缩小窗口 while (sum - nums[l] >= target) { sum -= nums[l++]; // 左指针向右滑动,减少窗口和 sum }
// 如果当前窗口的和 sum 大于或等于 target,更新答案 if (sum >= target) { ans = min(ans, r - l + 1); // 更新最小窗口长度 } }