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;
}
};