您的位置:首页 > 职场人生

leetcode 209. Minimum Size Subarray Sum-子序列最小长度|双指针|二分查找

2016-06-13 22:14 756 查看
原题链接:209. Minimum Size Subarray Sum
【思路1-Java】 双指针

用双指针——fast 和 slow实现,用 sum 记录子序列的和,

① 如果 sum < s,那么 fast 向后移动

② 如果 sum >= s,那么更新 minLen 长度,minLen=Math.min(fast-slow, minLen)

public class Solution {
public int minSubArrayLen(int s, int[] nums) {
int fast = 0, slow = 0, sum = 0, minLen = Integer.MAX_VALUE;
while(fast < nums.length) {
sum += nums[fast++];  //①
while(sum >= s && slow < fast) {
minLen = Math.min(fast - slow, minLen);  //②
sum -= nums[slow++];
}
}
return minLen == Integer.MAX_VALUE ? 0 : minLen;
}
}
14 / 14 test
cases passed. Runtime: 1
ms  Your runtime beats 16.64% of javasubmissions.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java leetcode 算法 面试