1. 程式人生 > 實用技巧 >209. 長度最小的子陣列

209. 長度最小的子陣列

給定一個含有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; }