leetcode-209-长度最小的子数组
题目描述:
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。
示例:
- 输入:
s = 7, nums = [2,3,1,2,4,3]
- 输出: 2
- 解释: 子数组
[4,3]
是该条件下的长度最小的连续子数组。
进阶:
如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。
要完成的函数:
int minSubArrayLen(int s, vector<int>& nums)
说明:
1、这道题给定一个正整数s,和一个包含正整数的vector,要求在vector中找到最短长度的连续子数组,这个子数组中所有数的和>=s,返回子数组的长度。
2、这道题不会很难,我们用滑窗的方法找到和>=s的子数组,接着不断更新最短的长度,最终返回这个最短的长度即可。
最后要考虑一下边界情况,也就是当滑窗到达vector末尾了怎么处理,和vector中没有元素的情况。
代码如下:(附详解)
- int minSubArrayLen(int s, vector<int>& nums)
- {
- if(nums.empty())return 0;//vector中没有元素,找不到满足条件的子数组,返回0
- int start=0,end=0,s1=nums.size(),sum=nums[0],record=INT_MAX;//start表示滑窗的开端,end表示滑窗末端
- while(start<s1)//对开端在vector中的每个位置,都进行考虑
- {
- while(sum<s)//当和小于s时,末端不断向右走,sum也不断地加
- {
- end++;
- if(end==s1)//如果超出vector的长度,那么当前滑窗不满足条件的,这个时候也就可以返回record了
- return record==INT_MAX?0:record;//如果record等于初始值,那么必然没有改变过record,也就是从头到尾都没找到满足条件的滑窗
- sum+=nums[end];
- }
- record=min(record,end-start+1);//更新record
- sum-=nums[start];//减去开端
- start++;//开端到了下一位
- }
- return record;
- }
上述代码实测8ms,beats 98.44% of cpp submissions。
leetcode-209-长度最小的子数组的更多相关文章
- Java实现 LeetCode 209 长度最小的子数组
209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = ...
- Leetcode 209.长度最小的子数组 By Python
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = 7, nums = [2, ...
- LeetCode 209. 长度最小的子数组(Minimum Size Subarray Sum)
题目描述 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = 7, nums ...
- LeetCode:长度最小的子数组【209】
LeetCode:长度最小的子数组[209] 题目描述 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 ...
- 领扣-209 长度最小的子数组 Minimum Size Subarray Sum MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 【LeetCode】209. 长度最小的子数组
209. 长度最小的子数组 知识点:数组:前缀和:二分法:双指针:滑动窗口 题目描述 给定一个含有 n 个正整数的数组和一个正整数 target . 找出该数组中满足其和 ≥ target 的长度最小 ...
- 代码随想录第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
2022/09/22 第二天 第一题 这题我就直接平方后排序了,很无脑但很快乐啊(官方题解是双指针 第二题 滑动窗口的问题,本来我也是直接暴力求解发现在leetCode上超时,看了官方题解,也是第一次 ...
- **209. Minimum Size Subarray Sum 长度最小的子数组
1. 题目描述 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = 7, nu ...
- LeetCode 长度最小的子数组
题目: 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度.如果不存在符合条件的连续子数组,返回 0. 思路: 非常明显用滑动窗口处 ...
- leetcode209. 长度最小的子数组
双指针滑动窗口解法,时间复杂度O(N). 滑动窗口,想象一下,在一个坐标上存在两个指针begin 和i ,begin 代表滑窗的左边框,i代表滑窗的右边框.两者通过分别向右滑动,前者能使窗口之间的和减 ...
随机推荐
- 39-python 字符串替换+正则
from bs4 import BeautifulSoup import urllib.request import re moduel =re.compile('<.*?>') st = ...
- 如何安装JDeveloper
1>下载jdk和JDeveloper jdk版本:jdk-7u65-windows-x64.EXE JDeveloper版本:jdev_suite_12.3_win64_V44419-01.is ...
- HTML 页面中的 SVG
SVG 文件可通过以下标签嵌入 HTML 文档:<embed>.<object> 或者 <iframe>. 1>使用 <embed> 标签 < ...
- SSM整合中每一框架需要做的基本操作简述
1.dao层的工作 pojo和映射文件以及接口(使用逆向工程) SqlMapConfig.xml(Mybaits核心配置文件) ApplicationContext-dao.xml 整合后Sprin ...
- golang之包和锁的机制
互斥锁 同一时刻只有一个携程在操作 package main import ( "fmt" "math/rand" "sync" " ...
- boost之date_time库
最近开了boost库的学习,就先从日期时间库开始吧,boost的date_time库是一个很强大的时间库,用起来还是挺方便的.以下算是我学习的笔记,我把它记录下来,以后便于我复习和查阅. #inclu ...
- asp.net 自定义节配置 (configSections下的section)
<configuration> <configSections> <!--.自定义一个节 CustomSection --> <section name=&q ...
- 职责链模式c#(处理车)
using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace 职责链模式{ ...
- Ural 1519 Formula 1 (DP)
题意:给定一个 n * m 的矩阵,问你能花出多少条回路. #pragma comment(linker, "/STACK:1024000000,1024000000") #inc ...
- util:properties
示例 <util:properties id="db" location="classpath:db.properties" /> 全部属性 功能概 ...