1. 程式人生 > 實用技巧 >高精度加減-C++模板-實現-超詳細

高精度加減-C++模板-實現-超詳細

給定一個含有 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
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。