JZ008和大于等于target的最短数组
2024-09-07 02:21:09
title: 长度最小的子数组
题目描述
题目链接:长度最小的子数组、剑指offer008
解题思路
简单滑动窗口题目,需要知道:
- 窗口左指针移动条件:窗口内总和 ≥ target 即可以不断移动窗口;
int minSubArrayLen(int target, vector<int>& nums) {
int left = 0, right = 0;
int sum = 0, len = INT_MAX;//窗口内数据总和,窗口长度;
for (; right < nums.size(); right++) {
//更新窗口
sum += nums[right];
while(sum >= target) {
len = min(len, right - left + 1);
//更新左窗口
sum -= nums[left];
left++;
}
}
return len == INT_MAX ? 0 : len;
}
怎么会想到滑动窗口呢?
本题特点:求连续的子数组问题,连续的子数组要满足某个特性(>= target),可以想到采用滑动窗口解决;
还有另一种想法,先看看暴力解法:先确定左边界,然后不断扩大右边界,数组中每个数组都当一次左边界,不断寻找右边界,将最小值保存下来;时间复杂度是o(n^2),而优化两重循环的算法,降低时间复杂度的就有滑动窗口;
复杂度分析
- 时间复杂度:o(n)
- 空间复杂度:O(1)
最新文章
- [C#6] 0-概览
- 从头学Qt Quick(2)-- QML语法从一个简单的例子说起
- 30大最有影响力的Web设计与开发英文博客
- linux 错误总结
- linux-redhat5找回root密码
- DATEDIFF interval=ms的用法
- vs2008工程配置
- JDK,TomCat安装配置
- span标签可以使用hide()方法隐藏吗?
- HDU5878(打表)
- dede的pagelist标签的listsize数字属性详解
- uploadify上传文件(1)--下载
- python CSRF跨站请求伪造
- urllib.parse
- 多态练习题(通过UML建模语言来实现饲养员喂养动物)
- go 的匿名函数和闭包
- Servlet案例1:用户登录
- Mybatis教程-实战看这一篇就够了
- lua -- 所有UI组件的基类
- 文件加密 解密 pdftk openssl gpg vim
热门文章
- Pandas怎样新增数据列
- [性能测试] locust学习-基础篇
- 可想实现一个自己的简单jQuery库?(五)
- jboss7学习4-具体下载安装
- for循环打印九九乘法表
- 使用Object.Defineproperties改变对象数据结构
- 设计模式之:享元模式FlyweightPattern的实现
- OllyDbg---比较、条件跳转指令
- cannot find module providing package github.com/&#215; working directory is not part of a module
- k8s TLS bootstrap解析-k8s TLS bootstrap流程分析