lintcode--和大于s的最小数组
来源:互联网 发布:淘宝直播微淘粉丝要求 编辑:程序博客网 时间:2024/06/07 03:47
给定一个由 n 个整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组。如果无解,则返回 -1。
给定数组 [2,3,1,2,4,3]
和 s = 7
, 子数组 [4,3]
是该条件下的最小长度子数组。
/*
定义两个指针,slow,fast,以先后速度向右走
fast先找到第一个是的sum>s的值
根据fast和slow计算当前子数组的长度
sum-=nums[slow],寻找最后一个不满足sum>=s 的slow,每次更新子数组长度的最短值。
*/
public class Solution {
public int minimumSize(int[] nums,int s){
if(nums ==null ||nums.length ==0)return -1;
int slow =0,fast =0;
int alen = nums.length;
int len = alen+1;
int sum = 0;
while(fast<alen){
while(fast<alen&&sum <s){
sum+=nums[fast];
fast++;
}
//!!不在循环里面
len = Math.min(len,fast-slow+1);
while(sum>=s){
sum -= nums[slow];
slow++;
len = Math.min(len,fast-slow+1);//!!在循环里面
}
//!!!不存在时候
len = len == alen+1?-1:len;
}
return len;
}
}
- lintcode--和大于s的最小数组
- LintCode-和大于S的最小子数组
- lintcode-406-和大于S的最小子数组
- LintCode: 和大于S的最小子数组
- LintCode-和大于S的最小子数组
- lintcode(406)和大于S的最小子数组
- LintCode:M-和大于S的最小子数组
- 和大于S的最小子数组-LintCode
- [Lintcode]Minimum Size Subarray Sum 和大于S的最小子数组
- lintcode刷题——和大于S的最小子数组
- 和大于S的最小子数组
- 题目:和大于S的最小子数组
- 406. 和大于S的最小子数组
- 406.Minimum Size Subarray Sum-和大于S的最小子数组(中等题)
- lintcode 旋转数组的最小数字
- LintCode--最小子数组
- lintcode ----最小子数组
- LintCode: 最小子数组
- Spring 注解指北
- MySQL按照(windows)及常用命令
- Activity的启动模式
- 遥感影像镶嵌线生成-如何根据影像自身特点生成完整的镶嵌线网络
- css继承
- lintcode--和大于s的最小数组
- 23种设计模式(7):中介者模式
- Android 不依赖activity的全局悬浮窗实现
- 从矩阵左上角到右下角的最大值
- gensim doc2vec + sklearn kmeans 做文本聚类
- git的fetch
- 压缩字符串
- 【Java】StringUtils工具类常用方法详解
- 使用谷歌内核TChromium入门