LC-209
2024-09-08 07:37:39
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
示例 1:
输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。
示例 2:
输入:target = 4, nums = [1,4,4]
输出:1
示例 3:
输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0
提示:
1 <= target <= 109
1 <= nums.length <= 105
1 <= nums[i] <= 105
进阶:
如果你已经实现 O(n) 时间复杂度的解法, 请尝试设计一个 O(n log(n)) 时间复杂度的解法。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解析
双指针法,做一个滑动窗口。
public class LC209 {
public static void main(String[] args) {
int[] ints = {1, 2, 3, 4, 5};
int target = 11; //3
System.out.println(minSubArrayLen(target, ints));
}
/**
* @param target
* @param nums
* @return
*/
public static int minSubArrayLen(int target, int[] nums) {
int low = 0, high = 0, min = Integer.MAX_VALUE;
int sum = 0;
while (high < nums.length) {
sum = sum + nums[high++];
while (sum >= target) {
min = Math.min(min, high - low);
sum = sum - nums[low++];
}
}
if (min == Integer.MAX_VALUE) return 0;
else return min;
}
}
最新文章
- linux搭载discuz
- React(一)基础点
- [BZOJ3991][SDOI2015]寻宝游戏
- 百度推出的echarts,制表折线图柱状图饼图等的超级工具(转)
- The Suspects 简单的并查集
- JTAG的SWD接线方式
- fedora 20 install skype
- gulp之css,js压缩合并加密替换
- [Linux命令]tar命令
- Spring学习之常用注解(转)
- 关于python抓取google搜索结果的若干问题
- Python的TkinterButton做为父窗口
- 【从零学习openCV】IOS7根据人脸检测
- 最简单的基于FFmpeg的封装格式处理:视音频复用器(muxer)
- particles.js在vue上的运用
- HDU6278 Just h-index
- 2018牛客网暑期ACM多校训练营(第二场)G Transform(二分)
- 20165337第七周实验报告《Java面向对象程序设计》
- 在Android中使用FFmpeg(android studio环境)
- Spring MVC 指导文档解读(二)
热门文章
- 聊聊视频中的编解码器,你所不知道的h264、h265、vp8、vp9和av1编解码库
- Net中委托之一
- springcloud报错-------关于 hystrix 的异常 FallbackDefinitionException:fallback method wasn&#39;t found
- js中的函数嵌套和闭包
- Centos7.x环境下 安装Diszz
- 【SVN】Please execute the &#39;Cleanup&#39; command.
- python2,3的区别
- Rsync未授权访问
- TCP/IP协议 | TCP协议 | UDP协议 | 三次握手四次挥手
- bzoj2084/luoguP3501 [Poi2010]Antisymmetry(回文自动机+dp)