您的位置:首页 > 其它

209. Minimum Size Subarray Sum

2016-07-22 03:32 225 查看
1. Two pointer

runner只走一遍,每次往前走一格,如果walker可以往前缩就一直缩到依旧满足条件的最远的位置。

最后不要忘了检查有没有满足条件的,如果没有就返回0

public int minSubArrayLen(int s, int[] nums) {
if(nums.length == 0) {
return 0;
}
int walker = 0;
int runner = 0;
int curSum = 0;
int minLen = Integer.MAX_VALUE;
while(runner < nums.length) {
curSum += nums[runner];
runner++;
while(curSum - nums[walker] >= s) {
curSum -= nums[walker];
walker++;
}
if(curSum >= s) {
minLen = Math.min(minLen, runner - walker);
}
}
return minLen == Integer.MAX_VALUE? 0: minLen;
}


所以时间复杂度是O(n)

2. NlogN方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: