这个题目,我一开始的思路就是双指针,一个从头开始,一个从末尾开始,不断缩小范围得到最小长度的子数组
但是在实现代码上碰到了问题,这样思路下:
class Solution {
public:
int minSubArrayLen(int s, vector<int>& nums) {
int left = 0, right = nums.size();
int sum = vecSum(nums, left, right);
while(left <= right){
//sum = vecSum(nums, left, right);
//if(sum < s)
// return right - left;
if(nums[left] <= nums[right])
left++;
else
right--;
}
return right-left;
}
int vecSum(vector<int>& nums, int left, int right){
int sum = 0;
for(int i = left; i <= right;i++)
sum += nums[i];
return sum;
}
};
登录后可查看更多问答,登录/注册