JZ008和大于等于target的最短数组
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)
JZ008和大于等于target的最短数组的更多相关文章
- Leetcode39--->Combination Sum(在数组中找出和为target的组合)
题目: 给定一个数组candidates和一个目标值target,求出数组中相加结果为target的数字组合: 举例: For example, given candidate set [2, 3, ...
- [LeetCode] Search in Rotated Sorted Array 在旋转有序数组中搜索
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
- Js中常用的字符串,数组,函数扩展
由于最近辞职在家,自己的时间相对多一点.所以就根据prototytpeJS的API,结合自己正在看的司徒大神的<javascript框架设计>,整理了下Js中常用一些字符串,数组,函数扩展 ...
- leetcode题解:Search for a Range (已排序数组范围查找)
题目: Given a sorted array of integers, find the starting and ending position of a given target value. ...
- [LeetCode] 34. Find First and Last Position of Element in Sorted Array 在有序数组中查找元素的第一个和最后一个位置
Given an array of integers nums sorted in ascending order, find the starting and ending position of ...
- [LeetCode] 33. Search in Rotated Sorted Array 在旋转有序数组中搜索
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- 《流畅的Python》第二部分 数据结构 【序列构成的数组】【字典和集合】【文本和字节序列】
第二部分 数据结构 第2章 序列构成的数组 内置序列类型 序列类型 序列 特点 容器序列 list.tuple.collections.deque - 能存放不同类型的数据:- 存放的是任意类型的对象 ...
- 【Java实现】剑指offer53.1——在排序数组中查找数字(LeetCode34:在排序数组中查找元素的起始位置)
序数组中查找元素的起始位置):思路分享 <剑指offer>题目和LeetCode主站本质是一样的,想要找到target数目,也需要找到左右边界 题目解析: 在一个排序数组中,找到targe ...
- 【LeetCode】34. 在排序数组中查找元素的第一个和最后一个位置
34. 在排序数组中查找元素的第一个和最后一个位置 知识点:数组,二分查找: 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置 ...
随机推荐
- JS字符串格式化
//字符串格式化String.prototype.format = function () { var values = arguments; return this.replace(/\{(\d+) ...
- 自启动Servlet
自启动servlet也叫自动实例化servlet 特点 该Servlet的实例化过程不依赖于请求,而依赖于容器的启动,当Tomcat启动时就会实例化该Servlet 普通Servlet是在浏览器第一次 ...
- Linux ftp服务器部署(最简单的ftp教程)
之前在阿里云领了一个ECS服务器(顺便说一句,白嫖的,真香~),就想着做点什么,然后试着做个 ftp 站点,因为第一次尝试,结果走了不少弯路.最后终于完成了,研究了两天(哎~,脑壳笨没办法)就想着记录 ...
- C 语言中 include <> 与include "" 的区别?
#include < > 引用的是编译器的类库路径里面的头文件. #include " " 引用的是你程序目录的相对路径中的头文件,如果在程序目录没有找到引用的头文件则 ...
- 接口combine
需求描述 进行复杂项目开发时,服务端(数据接口实现端)会把接口拆分的比较细粒度,以方便在更多地方复用.而拆分后的接口在前端进行组合请求时,通常会出现一个区块要请求5.6个接口甚至更多接口请求才能拿到想 ...
- 有关表单autocomplete = "off" 失效问题解决方案
一.autocomplete介绍 autocomplete是Html5中的新属性.该属性规定输入字段是否应该启用自动完成功能.自动完成允许浏览器预测对字段的输入.当用户在字段开始键入的时候,浏览器基于 ...
- ccf颁奖晚会
感想: 首先,十分感谢学校给我们参加比赛的机会,给予我们这次难能可贵的学习机会,第一次在这么大型的赛场中展现自己,我们也不免有些紧张.从最开始在线上进行模型训练,到我们不远千里在江苏进行场地的勘察,到 ...
- npm权限不够(安装什么都报错)
问题 Windows下使用npm安装任何包都报错, Windows下使用npm显示权限不够 如图: 解决方法 1. 方法一 使用管理员权限打开 命令窗口, 治标不治本!!!!不推荐 ...
- JavaScript遍历表单元素
运行效果: 源代码: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta char ...
- echarts中boundaryGap属性
boundaryGap:false boundaryGap:true 代码处: xAxis: { type: "category", data: ["06-01" ...