leetcode题解-209. Minimum Size Subarray Sum

来源:互联网 发布:淘宝网丝巾韩杰 编辑:程序博客网 时间:2024/06/17 08:05

题目:

Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous 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.

这道题目很简单,目的是寻找和大于等于target的最小子串长度,我们只需要使用一个游标来标识子串起点,然后用sum记录当前子串和。此外需要注意的是当sum大于target时,我们需要写一个循环来将起点不断向右移动。代码如下所示;

    public int minSubArrayLen(int s, int[] nums) {        int left=0, sum=0, min = Integer.MAX_VALUE;        for(int i=0; i<nums.length; i++){            sum += nums[i];            while(sum >= s) {                min = Math.min(min, i - left + 1);                sum -= nums[left++];            }        }        if(min == Integer.MAX_VALUE)            return 0;        return min ;    }
0 0