Given an array of n positive integers and a positive integer s, find the minimal length of a subarray of which the sum ≥ s. If there isn't one, return 0 instead.
For example, given the array [2,3,1,2,4,3] and s = 7,
the subarray [4,3] has the minimal length under the problem constraint.
Solution:
use two pointers, scan array from start to end, if subsum >=s , start++, if subsum<s end++.
compare min result.
public int minSubArrayLen(int s, int[] nums) {
int start = 0;
int end = 0;
int result = Integer.MAX_VALUE;
if(nums.length <=0) return 0;
int count = 0;
while(end< nums.length && start<=end) {
count+=nums[end];
while(count>=s) {
result = Math.min(result, end-start+1);
count -=nums[start];
start++;
}
end++;
}
return (result == Integer.MAX_VALUE) ? 0 :result;
}

本文介绍了一个算法,用于解决给定数组和目标和之间的最小子数组问题。通过使用双指针技术,该算法有效地扫描数组并找到满足条件的最小子数组长度。
126

被折叠的 条评论
为什么被折叠?



