← Sliding Window

Minimum Subarray Sum

Medium
Python
def min_subarray_len(target,nums):
    l=total=0; best=float('inf')
    for r in range(len(nums)):
        total+=nums[r]
        while total>=target:
            best=min(best,r-l+1)
            total-=nums[l]; l+=1
    return 0 if best==float('inf') else best
Java
public int minSubArrayLen(int target,int[] nums){
    int l=0,total=0,best=Integer.MAX_VALUE;
    for(int r=0;r<nums.length;r++){
        total+=nums[r];
        while(total>=target){
            best=Math.min(best,r-l+1);
            total-=nums[l++];
        }
    } return best==Integer.MAX_VALUE?0:best;
}

Key Insight

Variable window. float('inf') vs Integer.MAX_VALUE.

Python → Java Differences

  • float('inf') vs Integer.MAX_VALUE
  • Variable window identical
  • min() vs Math.min()
Python
def min_subarray_len(target,nums):
    l=total=0; best=float('inf')
    for r in range(len(nums)):
        total+=nums[r]
        while total>=target:
            best=min(best,r-l+1)
            total-=nums[l]; l+=1
    return 0 if best==float('inf') else best
Java
public int minSubArrayLen(int target,int[] nums){
    int l=0,total=0,best=Integer.MAX_VALUE;
    for(int r=0;r<nums.length;r++){
        total+=nums[r];
        while(total>=target){
            best=Math.min(best,r-l+1);
            total-=nums[l++];
        }
    } return best==Integer.MAX_VALUE?0:best;
}

Algorithm Steps

1. Expand right
2. Shrink left while valid
3. Track min