您的位置:首页 > 其它

【leetcode】Minimum Size Subarray Sum

2015-07-31 14:58 183 查看
class Solution {
public:
int minSubArrayLen(int s, vector<int>& nums) {

if( nums.size() < 1) return 0;
int start = 0, end = 0;
int sum = 0,min = 0;
int temp = 0;
//find the first minimum length
while(end < nums.size()){
sum += nums[end];
if(sum >= s){
min = end + 1;
break;
}
end++;
}

if(end >= nums.size()) return 0;

while(end < nums.size()){
//test how many previous element can be deleted
while(start <= end){
sum -= nums[start++];
if(sum >= s){
temp = end - start + 1;
if(temp < min)
min = temp;
}else
break;
}
//if end does not reach the end of array and start is smaller than end
//then add the next element
if(end < nums.size() && start < end){
end++;
sum += nums[end];
}else
break;
}

return min;
}

};


以上是AC代码

主要思路还是应用双指针 start 和 end

1. 固定start 移动end 找到第一个满足大于等于s的长度

2. 试着删除开始的几个元素,直到不满足s

3. 如果2没有全部之前所存储的满足s的元素, 则继续加上end指针的指向的后面的元素

4.循环2和3过程直到遍历了所有元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: