LeetCode/com/zerroi/leetcode/Three13/MinSubArrayLen.java

38 lines
1.2 KiB
Java
Raw Permalink Normal View History

2024-03-14 20:58:23 +08:00
package com.zerroi.leetcode.Three13;
import java.util.Arrays;
public class MinSubArrayLen {
public static void main(String[] args) {
SolutionSecond solutionSecond = new SolutionSecond();
// int res = solutionSecond.minSubArrayLen(7, new int[]{2, 3, 1, 2, 4, 3});
int res = solutionSecond.minSubArrayLen(11, new int[]{1,2,3,4,5});
// int res = solutionSecond.minSubArrayLen(11, new int[]{1, 1, 1, 1, 1, 1, 1, 1});
System.out.println("res = " + res);
}
}
/*
给定一个含有 n 个正整数的数组和一个正整数 target
找出该数组中满足其总和大于等于 target 的长度最小的 连续
子数组
[numsl, numsl+1, ..., numsr-1, numsr] 并返回其长度如果不存在符合条件的子数组返回 0
*/
class SolutionSecond {
public int minSubArrayLen(int target, int[] nums) {
int sum = 0;
int minLen = Integer.MAX_VALUE;
int index = 0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
while (sum >= target) {
minLen = Math.min(minLen, index - i + 1);
sum -= nums[index];
index ++;
}
}
return minLen == Integer.MAX_VALUE ? 0 : minLen;
}
}