209 Minimum Size Subarray Sum

1. Question

Given an array ofnpositive integers and a positive integers, find the minimal length of acontiguoussubarray of which the sum ≥s. If there isn't one, return 0 instead.

For example, given the array[2,3,1,2,4,3]ands = 7, the subarray[4,3]has the minimal length under the problem constraint.

2. Implementation

(1) Two Pointers

class Solution {
    public int minSubArrayLen(int s, int[] nums) {
        int sum = 0, minLen = Integer.MAX_VALUE;

        for (int start = 0, end = 0; end < nums.length; end++) {
            sum += nums[end];

            while (sum >= s) {
                minLen = Math.min(minLen, end - start + 1);
                sum -= nums[start];
                ++start;
            }
        }
        return minLen == Integer.MAX_VALUE ? 0 : minLen;
    }
}

(2) Binary Search

3. Time & Space Complexity

Two Pointers: 时间复杂度O(n), 空间复杂度O(1)

Binary Search: 时间复杂度O(nlogn), 空间复杂度O(1)

Last updated

Was this helpful?