給定一個含有?n?個正整數的數組和一個正整數?s ,找出該數組中滿足其和 ≥ s 的長度最小的連續子數組。如果不存在符合條件的連續子數組,返回 0。
示例:?
輸入: s = 7, nums = [2,3,1,2,4,3]
輸出: 2
解釋: 子數組?[4,3]?是該條件下的長度最小的連續子數組。
進階:
如果你已經完成了O(n) 時間復雜度的解法, 請嘗試?O(n log n) 時間復雜度的解法。
思路:雙指針
這個題我規范了一下代碼怎么寫:
這是第一遍:
這是改規范之后:
class Solution {public int minSubArrayLen(int s, int[] nums) {int len=nums.length;if(len==0)return 0;int ans=len+1;int sum=0;int begin=0;int end=0;while(end<len){sum+=nums[end++];while(sum>=s){if(ans>end-begin)ans=end-begin;sum-=nums[begin++];}}return ans==len+1?0:ans;}
}
?