長度最小的子陣列-LeetCode
阿新 • • 發佈:2020-08-02
題目描述:
給定一個含有n個正整數的陣列和一個正整數s ,找出該陣列中滿足其和 ≥ s 的長度最小的 連續 子陣列,並返回其長度。如果不存在符合條件的子陣列,返回 0。
示例:
輸入:s = 7, nums = [2,3,1,2,4,3]
輸出:2
解釋:子陣列[4,3]是該條件下的長度最小的子陣列。
思路:
雖然自己最初也想到了這種方法,但是程式碼各種bug,花費很長時間才解決,特此記錄一下。
public class Solution {
public int minSubArrayLen(int s,int[] nums){ int startIndex = 0; int Length = Integer.MAX_VALUE; int sum = 0; for (int i = 0; i < nums.length; i++) { sum = sum + nums[i]; if (sum >= s){ Length = i - startIndex + 1<Length?i-startIndex + 1:Length;for (int j = startIndex; j < i; j++) { if (sum - nums[j] < s) break; sum = sum - nums[j]; startIndex = j + 1;
Length = i - startIndex + 1<Length?i-startIndex + 1:Length;
}
}
}
return Length == Integer.MAX_VALUE?0:Length;}
}