Minimum Size Subarray Sum
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.
分析
窗口类指针。for i loop里直接跟上while j 的条件,i,j无需错开,开始直接相等。
class Solution {
public int minSubArrayLen(int s, int[] nums) {
if(nums == null || nums.length == 0)
return 0;
int cnt = Integer.MAX_VALUE, n = nums.length, sum = 0;
for(int i = 0, j = 0; i < n; i ++){
//直接while开始,不需要i,j开始错开。
while(j < n && sum < s){
sum += nums[j ++];
}
//while里俩条件,不保证sum存在,所以此处需要再判断。
if(s <= sum){
cnt = Math.min(j - i, cnt);
}
sum -= nums[i];
}
if(cnt == Integer.MAX_VALUE){
return 0;
}
return cnt;
}
}
python
Last updated
Was this helpful?