滑动窗口209. 长度最小的子数组

1.题目

给定一个含有 n个正整数的数组和一个正整数 target

找出该数组中满足其总和大于等于target的长度最小的 子数组 [numsl, numsl+1, ..., 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]
输出:0

2.算法

本题我们为了降低时间复杂度采用滑动窗口解决,分为三步:

1.left=0;right=0.

2.进入窗口。->利用long long sun变量来统计left和right之间所有数字之和。

3.判断结果出窗口。

3.代码书写

cpp 复制代码
class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        	int left = 0;
	int right = 0;
	long long int sum = nums[right];
	int len = 99999999;
	while (right < nums.size())
	{
		if (sum < target)
		{
			right++;
             if(right<nums.size())
			sum = sum + nums[right];
		}
		if (sum >= target)
		{
			if (len > right - left + 1)
				len = right - left + 1;
			sum = sum - nums[left];
			left++;
		}
	}
	if (len == 99999999)return 0;
	return len;
    }
};
相关推荐
HVACoder1 天前
复习下线性代数,使用向量平移拼接两段线
c++·线性代数·算法
爱coding的橙子1 天前
每日算法刷题Day77:10.22:leetcode 二叉树bfs18道题,用时3h
算法·leetcode·职场和发展
Swift社区1 天前
LeetCode 404:左叶子之和(Sum of Left Leaves)
算法·leetcode·职场和发展
南枝异客1 天前
查找算法-顺序查找
python·算法
QuantumLeap丶1 天前
《数据结构:从0到1》-06-单链表&双链表
数据结构·算法
violet-lz1 天前
数据结构八大排序:快速排序-挖坑法(递归与非递归)及其优化
数据结构
李牧九丶1 天前
从零学算法59
算法
Mrliu__1 天前
Python数据结构(七):Python 高级排序算法:希尔 快速 归并
数据结构·python·排序算法
一匹电信狗1 天前
【C++】手搓AVL树
服务器·c++·算法·leetcode·小程序·stl·visual studio
月疯1 天前
离散卷积,小demo(小波信号分析)
算法