LCR 008. 长度最小的子数组 - 力扣(LeetCode)
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
// 初始化变量
int sum = 0; // 当前窗口内元素的和
int minLength = INT_MAX; // 最小子数组长度,初始为最大整数
int left = 0; // 窗口左边界
// 遍历数组,right 是窗口右边界
for (int right = 0; right < nums.size(); right++) {
sum += nums[right]; // 更新当前窗口的和
// 当窗口内的和大于等于目标值时,尝试收缩窗口
while (sum >= target) {
// 更新最小子数组长度
minLength = min(minLength, right - left + 1);
// 移动左边界,缩小窗口
sum -= nums[left];
left++;
}
}
// 如果没有找到符合条件的子数组,返回 0
return minLength == INT_MAX ? 0 : minLength;
}
};
最后一步要注意,我当时没有考虑到没找到的问题,导致错误!!!!
采用滑动窗口思想