大连百度网站优化,做网站的程序源码,公众号开发所需技术,沧州网站建设公司翼马文章目录 1.题目2.思路3.代码 1.题目
LCR 008. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] #xff0c;并返回其长度**。**如果不存在符合条件… 文章目录 1.题目2.思路3.代码 1.题目
LCR 008. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] 并返回其长度**。**如果不存在符合条件的子数组返回 0 。
示例 1
输入target 7, nums [2,3,1,2,4,3]
输出2
解释子数组 [4,3] 是该条件下的长度最小的子数组。示例 2
输入target 4, nums [1,4,4]
输出1示例 3
输入target 11, nums [1,1,1,1,1,1,1,1]
输出02.思路
当需要使用单调性的时候使用滑动窗口left和right都是从0开始right负责控制让窗口i变大left负责控制让窗口变小时间复杂度是ON
3.代码
class Solution {
public:int minSubArrayLen(int target, vectorint nums) {int left 0, right 0; // 滑动窗口的左右指针int sum 0,len INT_MAX; // 窗口内数字的和 记录最小长度初始值为最大值while (right nums.size()) {sum nums[right];right; // 移动右指针扩大窗// 当窗口内的和大于等于目标值时尝试收缩窗口while (sum target) {// 更新最小长度len min(len, right - left);// 收缩左边界减少窗口内的和sum - nums[left];left;}}// 如果没有找到符合条件的子数组返回0return len INT_MAX ? 0 : len;}
};