只有解了O(n)的解法。用queue实现。
class Solution {
public:
int minSubArrayLen(int s, vector<int>& nums) {
int ans=0;
int min=nums.size()+1;
int sum=0;
queue<int> q;
for(int i=0;i<nums.size();i++)
{
sum+=nums[i];
q.push(nums[i]);
while(sum-q.front()>=s)
{
sum-=q.front();
q.pop();
}
ans=(sum>=s)?q.size():min;
min=(ans<min)?ans:min;
}
return (min==(nums.size()+1))?0:min;
}
};