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
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;
}
Variable window. float('inf') vs Integer.MAX_VALUE.
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
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;
}
1. Expand right 2. Shrink left while valid 3. Track min