给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-size-subarray-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
public class MinSubArrayLen { public static void main(String[] args) { int[] arr = new int[]{2, 3, 1, 2, 4, 3}; int i = minSubArrayLen(100, arr); System.out.println("i = " + i); } public static int minSubArrayLen(int target, int[] nums) { int i = 0; int res = Integer.MAX_VALUE; int sum = 0; for (int j = 0; j < nums.length; j++) { sum += nums[j]; while (sum >= target) { int length = j - i + 1; res = Math.min(length, res); sum -= nums[i]; i++; } } return res == Integer.MAX_VALUE ? 0 : res; } }