1. 对应力扣题目连接
2. 实现案例代码
public class SubarrayWithTheSmallestLength {
public static void main(String[] args) {
int[] nums = new int[]{1, 2, 3, 4, 5};
int target = 8;
List<Integer> targetArray = new ArrayList();
int result = minSubArrayLen(target, nums,targetArray);
System.out.println("最小子数组的长度为:" + result);
System.out.println(targetArray);
}
public static int minSubArrayLen(int target, int[] nums, List<Integer> targetArray) {
int n = nums.length;
int minLength = Integer.MAX_VALUE;
int sum = 0;
int left = 0;
for (int right = 0; right < n; right++) {
sum += nums[right];
minLength = Math.min(minLength, right - left + 1);
while (sum >= target) {
if (right - left + 1 < minLength) {
minLength = right - left + 1;
targetArray.clear();
for (int i = left; i <= right; i++) {
targetArray.add(nums[i]);
}
}
sum -= nums[left++];
}
}
return minLength == Integer.MAX_VALUE ? 0 : minLength;
}
}