首页 > 编程语言 > 详细

【数组】Minimum Size Subarray Sum

时间:2016-01-08 23:36:32      阅读:294      评论:0      收藏:0      [点我收藏+]

题目:

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 is O(n log n).

思路:

两个指针, start end, end向后走,直到 sum 大于 s. 然后start向后, 直到sum 小于s. 同时更新 min值。

/**
 * @param {number} s
 * @param {number[]} nums
 * @return {number}
 */
var minSubArrayLen = function(s, nums) {
    var l=0,r=0,min=2147483647,sum=0;
    while(r<nums.length&&l<=r){
        while(r<nums.length&&sum<s){
            sum+=nums[r++];
        }
        while(l<=r&&sum>=s){
            min=Math.min(min,r-l);
            sum-=nums[l++];
            
        }
    }
    
    return min==2147483647?0:min;
};

 

【数组】Minimum Size Subarray Sum

原文:http://www.cnblogs.com/shytong/p/5115059.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!