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)

最新文章

  1. [C#6] 0-概览
  2. 从头学Qt Quick(2)-- QML语法从一个简单的例子说起
  3. 30大最有影响力的Web设计与开发英文博客
  4. linux 错误总结
  5. linux-redhat5找回root密码
  6. DATEDIFF interval=ms的用法
  7. vs2008工程配置
  8. JDK,TomCat安装配置
  9. span标签可以使用hide()方法隐藏吗?
  10. HDU5878(打表)
  11. dede的pagelist标签的listsize数字属性详解
  12. uploadify上传文件(1)--下载
  13. python CSRF跨站请求伪造
  14. urllib.parse
  15. 多态练习题(通过UML建模语言来实现饲养员喂养动物)
  16. go 的匿名函数和闭包
  17. Servlet案例1:用户登录
  18. Mybatis教程-实战看这一篇就够了
  19. lua -- 所有UI组件的基类
  20. 文件加密 解密 pdftk openssl gpg vim

热门文章

  1. Pandas怎样新增数据列
  2. [性能测试] locust学习-基础篇
  3. 可想实现一个自己的简单jQuery库?(五)
  4. jboss7学习4-具体下载安装
  5. for循环打印九九乘法表
  6. 使用Object.Defineproperties改变对象数据结构
  7. 设计模式之:享元模式FlyweightPattern的实现
  8. OllyDbg---比较、条件跳转指令
  9. cannot find module providing package github.com/&#215; working directory is not part of a module
  10. k8s TLS bootstrap解析-k8s TLS bootstrap流程分析