209. Minimum Size Subarray Sum
来源:互联网 发布:美篇同类软件 编辑:程序博客网 时间:2024/05/16 15:40
Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous subarray of which the sum ≥ s. If there isn’t one, return 0 instead.
For example, given the array [2,3,1,2,4,3] and s = 7,
the subarray [4,3] has the minimal length under the problem constraint.
思考:
- 使用两个指针small,big,并初始化sum = 0;
- 循环遍历数组,如果小于s,循环加上nums[big++];
- 循环遍历数组,如果sum>=s,就先min = Math.min(min,big-small);然后sum -= nums[small++];
细节问题:
- 步骤二,为什么不使用小于等于s呢?
如果使用小于等于s,请看如下情况:[2,3,1,1,1,1,1] and s=5,那么还要加上1。之后的第三步就不对了。无论如何都得不到正确的结果。
代码:
public int minSubArrayLen1(int s, int[] nums) { // Arrays.sort(nums); int small = 0; int big = 0; int len = nums.length; int sum = 0; int min = Integer.MAX_VALUE; while(small<len && big<len){ while(sum < s && big<len){ //sum<s 还是sum<=s? sum += nums[big]; big++; } while(sum >= s && small<big){//如果是 sum>=s 呢? min = Math.min(min, big-small); sum -= nums[small]; small++; } } return min==Integer.MAX_VALUE?0:min; }
总结:
这道题考察了双指针的移动。对于双指针的移动,有三种情况:1.从左边开始移动2.从右边开始移动(这两种情况容易想到)3.从中间开始向两端移动。4.从两端向中间开始移动。本题是第一种情况。
0 0
- 209.Minimum Size Subarray Sum
- 209.Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 209. Minimum Size Subarray Sum
- 快速Android开发框架
- 解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题
- jQuery实战3:菜单效果
- IDA反汇编/反编译静态分析iOS模拟器程序系列
- 微信二维码|头像下载器
- 209. Minimum Size Subarray Sum
- 用CMD或者bat修改host文件
- ssl,ftp远程登录
- string::size_type 的理解
- iOS动画案例 类似于qq账号信息里的一个动画
- 网页中历史记录的实现
- JVM内幕:Java虚拟机详解
- jquery的checkbox,radio,select等方法总结
- android_90_开机动画