您的位置:首页 > 其它

leetcode--Minimum Size Subarray Sum

2017-08-08 14:16 369 查看
Given an array of n positive integers and a positive integer s, find the minimal length of a 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.

click to show more practice.
More practice:

If you have figured out the O(n) solution, try coding another solution of which the time complexity isO(n log n).

题意:给定一个整数数组,和一个整数s,求某个子数组之和大于这个整数s,且数组长度最短,返回最短长度

如果不存在这样的子数组,返回0

分类:数组,双指针

解法1:双指针思路,一个指针end向后找,直到和大于s,这时计算子数组长度,

然后第二个指针start开始找,和减去第二个指针指向的值,如果这个值还大于s,更新长度,start继续向后

直到和小于s,end才继续找

重复上述过程

[java] view
plain copy

public class Solution {  

    public int minSubArrayLen(int s, int[] nums) {  

        int start = 0;  

        int end = 0;  

        int len = nums.length;  

        if(len==0) return 0;  

        int sum = 0;  

        int count = len+1;  

        while(start<=end){  

            if(sum<s){            <span style="white-space:pre">   </span>  

            <span style="white-space:pre">  </span>if(end==len) break;  

                sum += nums[end++];  

            }else{  

                count = Math.min(count,end-start);      

                sum -= nums[start++];  

            }  

        }  

        if(count==len+1) return 0;  

        return count;  

    }  

}  



原文链接http://blog.csdn.net/crazy__chen/article/details/46575663
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: