[LeetCode 209] Minimum Size Subarray Sum

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.

Solution:

use two pointers, scan array from start to end, if subsum >=s , start++, if subsum<s end++.

compare min result.

public int minSubArrayLen(int s, int[] nums) {
        int start = 0;
        int end = 0;
        int result = Integer.MAX_VALUE;
        if(nums.length <=0) return 0;
        int count = 0;
        while(end< nums.length && start<=end) {
            count+=nums[end];
            while(count>=s) {
                result = Math.min(result, end-start+1);
                count -=nums[start];
                start++;
            }
            end++;
        }
        return (result == Integer.MAX_VALUE) ? 0 :result;
    }



你可能感兴趣的:(LeetCode,pointer,Two)