209. 長度最小的子陣列
阿新 • • 發佈:2020-06-28
給定一個含有n個正整數的陣列和一個正整數s ,找出該陣列中滿足其和 ≥ s 的長度最小的連續子陣列,並返回其長度。如果不存在符合條件的連續子陣列,返回 0。
示例:
輸入: s = 7, nums = [2,3,1,2,4,3]
輸出: 2
解釋: 子陣列[4,3]是該條件下的長度最小的連續子陣列。
進階:
如果你已經完成了O(n) 時間複雜度的解法, 請嘗試O(n log n) 時間複雜度的解法。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/minimum-size-subarray-sum
滑動視窗:https://www.bilibili.com/video/BV1UA411i77h
public static int minSubArrayLen(int s, int[] nums) { int minLen = Integer.MAX_VALUE; int left=-1 ,right=-1; int sum=0; while(left<=right) { if(sum<s) { //右指標右移一位 right++; if(right>=nums.length) {break; } sum+=nums[right]; } else { //左指標右移一位 if(right-left < minLen) minLen = right-left; left++; if(left>right) { break; } sum-=nums[left]; } } return minLen==Integer.MAX_VALUE?0:minLen; }