码迷,mamicode.com
首页 > 其他好文 > 详细

209. Minimum Size Subarray Sum

时间:2016-07-22 06:33:33      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

1. Two pointer

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

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

 1     public int minSubArrayLen(int s, int[] nums) {
 2         if(nums.length == 0) {
 3             return 0;
 4         }
 5         int walker = 0;
 6         int runner = 0;
 7         int curSum = 0;
 8         int minLen = Integer.MAX_VALUE;
 9         while(runner < nums.length) {
10             curSum += nums[runner];
11             runner++;
12             while(curSum - nums[walker] >= s) {
13                 curSum -= nums[walker];
14                 walker++;
15             }
16             if(curSum >= s) {
17                 minLen = Math.min(minLen, runner - walker);
18             }
19         }
20         return minLen == Integer.MAX_VALUE? 0: minLen;
21     }

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

 

2. NlogN方法

209. Minimum Size Subarray Sum

标签:

原文地址:http://www.cnblogs.com/warmland/p/5693756.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!