给定一个含有 n 个正整数的数组和一个正整数 target 。
n
target
找出该数组中满足其总和大于等于 target 的长度最小的
[numsl, numsl+1, ..., numsr-1, numsr]
0
示例 1: 输入:tokens = ["2","1","+","3","*"] 输出:9 解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9
public static int minSubArrayLen(int target, int[] nums) { int left = 0, sum = 0, res = Integer.MAX_VALUE; for (int right = 0; right < nums.length; right++) { //累加数组元素 sum += nums[right]; //当累加和大于等于 目标值时 while (sum >= target) { //计算 符合条件的数组长度 res = Math.min(res, right - left + 1); //累加和减去最左边元素,最左边索引右移 sum -= nums[left++]; } } return res == Integer.MAX_VALUE ? 0 : res; } public static void main(String[] args) { int[] nums = {2, 3, 1, 2, 4, 3}; System.out.println(minSubArrayLen(7, nums)); }