For example, given the array
[2,3,1,2,4,3]
and s = 7
,the subarray
[4,3]
has the minimal length under the problem constraint.解法 :
基本上就是動態規劃的精神,很難口語描述,配合程式碼一起講。
class Solution { public: int minSubArrayLen(int s, vector<int>& nums) { int n = nums.size(), start = 0, sum = 0, minlen = INT_MAX; for (int i = 0; i < n; i++) { //將此index的值加進來 sum += nums[i]; //發現sum的值大於等於 s後進去條件式 //跟目前發現的最小長度比大小 //並且把sum的減去現在的起始點的值,再把起始點往前 //嘗試找滿足條件的最小值 while (sum >= s) { minlen = min(minlen, i - start + 1); sum -= nums[start++]; } } return minlen == INT_MAX ? 0 : minlen; } };
沒有留言 :
張貼留言