Skip to content

Latest commit

 

History

History
71 lines (54 loc) · 1.55 KB

20210110.md

File metadata and controls

71 lines (54 loc) · 1.55 KB

Algorithm

209. Minimum Size Subarray Sum

Description

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.

Example:

Input: s = 7, nums = [2,3,1,2,4,3]
Output: 2
Explanation: the subarray [4,3] has the minimal length under the problem constraint.

Follow up:

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

Solution

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

Discuss

Review

Tip

Share