高精度加減-C++模板-實現-超詳細
阿新 • • 發佈:2020-08-14
給定一個含有 n 個正整數的陣列和一個正整數 s ,找出該陣列中滿足其和 ≥ s 的長度最小的 連續 子陣列,並返回其長度。如果不存在符合條件的子陣列,返回 0。
示例:
輸入:s = 7, nums = [2,3,1,2,4,3]
輸出:2
解釋:子陣列 [4,3] 是該條件下的長度最小的子陣列。
class Solution { public int minSubArrayLen(int s, int[] nums) { int sum = 0; int min = Integer.MAX_VALUE; int slow = 0, fast = 0; while(fast < nums.length) { sum += nums[fast]; while(sum >= s) { min = Math.min(min, fast - slow + 1); sum -= nums[slow]; slow++; } fast++; } return min != Integer.MAX_VALUE? min : 0; } }
進階:
如果你已經完成了 O(n) 時間複雜度的解法, 請嘗試 O(n log n) 時間複雜度的解法。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/minimum-size-subarray-sum
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。