Leetcode--209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。
示例:
输入: s = 7, nums = [2,3,1,2,4,3]
输出: 2
解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。
进阶:
如果你已经完成了O(n) 时间复杂度的解法, 请尝试 O(n log n) 时间复杂度的解法。
思路:
双指针法:
设定上下界,从0开始,右指针一直向右遍历,累加遍历过的值,当和大于等于s时,减去第一个值,如果还是大于等于s,减去第二个值,以此类推,一直遍历到最后。
提交的代码:
class Solution {
public int minSubArrayLen(int s, int[] nums) {
int i=0,j=0,sum=0,t=2147483647;//sum记录当前和,t记录当前和是几个值的相加
while(sum>=s||(i<nums.length&&j<nums.length)) //这里sum>=s比较重要,比如s=7,数组最后三项是2,4,3,如果不加,因为此时j已经达到退出循环的条件,会退出,然后sum=9,t=3;所以加这个条件使得继续执行else if中的操作
{
if(sum<s)
{
sum+=nums[j];
j++;
}
else if(sum>=s)
{
if(j-i<t)
{
t = j-i;
}
sum-=nums[i];
i++;
}
}
if(t==2147483647)
{
return 0;
}
return t;
}
}
完整的代码:
public class Solution209 {
public static int minSubArrayLen(int s, int[] nums) {
int i=0,j=0,sum=0,t=2147483647;//sum记录当前和,t记录当前和是几个值的相加
while(sum>=s||(i<nums.length&&j<nums.length))
{
if(sum<s)
{
sum+=nums[j];
j++;
}
else if(sum>=s)
{
if(j-i<t)
{
t = j-i;
}
sum-=nums[i];
i++;
}
}
if(t==2147483647)
{
return 0;
}
return t;
}
public static void main(String[] args)
{
int[] nums = {2,3,1,2,4,3};
int s = 7;
System.out.println(minSubArrayLen(s,nums));
}
}
Leetcode--209. 长度最小的子数组相关推荐
- 代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、LeetCode 209.长度最小的子数组、LeetCode 59.螺旋矩阵II
LeetCode 977.有序数组的平方 双指针法:数组其实是有序的, 只不过负数平方之后可能成为最大数了.那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间.此时可以考虑双指针法 ...
- LeetCode—209. 长度最小的子数组
209. 长度最小的子数组 题目描述:给定一个含有 n 个正整数的数组和一个正整数 target . 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ...
- leetcode —— 209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度.如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = 7, num ...
- leetcode 209.长度最小的子数组
1 题目描述 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = 7, num ...
- LeetCode——209.长度最小的子数组
https://leetcode-cn.com/problems/minimum-size-subarray-sum/submissions/ @代码随想录 1.暴力解法 class Solution ...
- LeetCode 209. 长度最小的子数组
思路: 评论区的大佬太强了,搬运. len 表示 结果:j表示此片段的最左索引:sum表示片段和 先遍历,逐个递加,直到大于s 时,再去缩短长度. public int minSubArrayLen( ...
- [leetcode]209. 长度最小的子数组
暴力: class Solution {public:int minSubArrayLen(int s, vector<int>& nums) {bool flag = false ...
- 【Leetcode数组--子数组--滑动窗口】209. 长度最小的子数组 904. 水果成篮 1004. 最大连续1的个数 III 76. 最小覆盖子串(有数组操作中重要的方法:滑动窗口!!!!)
文章目录 Leetcode209 1.问题描述 2.解决方案 解法一:两个错误思路的算法 解法二:暴力 解法三:滑动窗口法(O(n)) Leetcode904 1.问题描述 2.解决方案 Leetco ...
- Leonard代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。
第一章数组 (今日任务) 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结 建议大家先独立做题,然后看视频讲解,然后看文章讲解,然后在重新做一遍题,把题目AC,最后整理 ...
- 代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II
代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II 一. LeetCode977.有序数组的平方 1. 题目链接[LeetCode9 ...
最新文章
- 工具推荐:Astah Community 绘制图形
- 『原创』用C++开发WM应用系列(6)——深化ListBox控件
- git 恢复被覆盖本地提交内容
- 【Python】 获取MP3信息replica
- 动态排序JavaBean
- 为什么很多人说 Java 不适合编写桌面应用?
- 信用评分python_信用评分卡(python)
- 可重复使用的MicroProfile Health探针
- Word中摘要和正文同时分栏后,正文跑到下一页,怎么办?或Word分栏后第一页明明有空位后面的文字却自动跳到第二页了,怎么办?...
- 如何把一个数据库的数据copy到另外一个数据库
- 优化算法——差分进化算法(DE)
- Netfilter的rpfilter技术-Linux的uRPF
- cpu功耗排行_常见NAS CPU处理器性能排行榜(简单天梯图)
- python里面fabs什么意思_介绍Python中的fabs()方法的使用
- ProcessOn‘s Bug--完善个人资料无限扩容
- int,long和long long的区别
- 测验1: Python快速入门 (第2周)
- iOS中视频播放的学习
- 腾讯、阿里开始正面交锋新零售,双寡头就代表未来吗?
- 段码屏中液晶相与相变的含义?
热门文章
- 程序员面试金典 - 面试题 17.04. 消失的数字(数学/位运算)
- LeetCode 695. 岛屿的最大面积(图的BFS/DFS)
- python concat_python-pd.concat()不合并在同一索引上
- Linux命令行配置静态IP地址
- ubuntu server安装hadoop和spark,并设置集群
- ADS1.2开发环境创建与简要介绍
- 软件开发 thoughtworks 技术面_【软件开发】10月29日比赛详细预告
- 技术动态 | 去中心化知识图谱协作平台建设实践
- 笔记:seafile 7.x 安装和部署摘要
- 文献阅读课10-Neural Relation Extraction for Knowledge Base Enrichment(提取+嵌入+消歧+规范化联合模型,实体已知,仅关系抽取,多词实体)