lintcode-406-和大於S的最小子陣列
阿新 • • 發佈:2019-01-04
給定一個由 n 個整陣列成的陣列和一個正整數 s ,請找出該陣列中滿足其和 ≥ s 的最小長度子陣列。如果無解,則返回 -1。
您在真實的面試中是否遇到過這個題? Yes 樣例給定陣列 [2,3,1,2,4,3]
和 s
= 7
, 子陣列 [4,3]
是該條件下的最小長度子陣列。
如果你已經完成了O(n)時間複雜度的程式設計,請再試試 O(n log n)時間複雜度。
class Solution { public: /** * @param nums: a vector of integers * @param s: an integer * @return: an integer representing the minimum size of subarray */ int minimumSize(vector<int> &nums, int s) { // write your code here if(nums.empty()) return -1; int result=INT_MAX,begin=0,end=0,size=nums.size(),sum=0; while(end<size){ sum+=nums[end]; while(sum>=s&&end>=begin){ if(result>end-begin+1) result=end-begin+1; sum-=nums[begin]; ++begin; } ++end; } return result==INT_MAX?-1:result; } };