Myna for Google Translate Mac(Google Translate桌面客戶端)
阿新 • • 發佈:2020-11-12
給定一個含有n個正整數的陣列和一個正整數s ,找出該陣列中滿足其和≥ s的長度最小的連續子陣列,並返回其長度。如果不存在符合條件的子陣列,返回 0。
示例:
輸入:s = 7, nums = [2,3,1,2,4,3]
輸出:2 解釋:子陣列[4,3]
是該條件下的長度最小的子陣列。
進階:
- 如果你已經完成了O(n) 時間複雜度的解法, 請嘗試O(nlogn) 時間複雜度的解法。
class Solution { public: int minSubArrayLen(int s, vector<int>& nums) { if (nums.empty()) return0; int left = 0, right = 0, sum = 0, len = nums.size(), res = len + 1; while (right < len) { while (sum < s && right < len) { sum += nums[right++]; } while (sum >= s) { res = min(res, right - left); sum-= nums[left++]; } } return res == len + 1 ? 0 : res; } };