38 lines
1.2 KiB
Java
38 lines
1.2 KiB
Java
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;
|
|
}
|
|
}
|