一、长度最小的子数组
二、解题思路
采用滑动窗口的思路,详细见代码。
三、代码
class Solution {public int minSubArrayLen(int target, int[] nums) {int n = nums.length, left = 0, right = 0, sum = 0;int ans = n + 1; for (right = 0; right < n; right ++) { //right 遍历数组sum += nums[right];while (sum - nums[left] >= target) { // 当子数组的和大于等于 target 时,开始从左收缩数组sum -= nums[left];left++;}if (sum >= target) { // 当 ringht 处于数组前边部分时,可能子数组和还没有达到 target值,达到后再更新ansans = Math.min(ans, right - left + 1);}}return ans <= n ? ans : 0;}
}