您的位置:首页 > 其它

LeetCode209—Minimum Size Subarray Sum

2017-04-03 21:49 309 查看
终于不用找实习了,恢复一下学习的节奏。

原题

LeetCode209

Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous subarray of which the sum ≥ s. If there isn’t one, return 0 instead.

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.

分析

在正如Tags所说,
Tow Pointer
,由于子序列是连续的,因此,只需要两个索引一个表示开始,一个表示结尾。当当前的
sum>target
就需要更新了,因为求的是大于等于target的最短子序列,否则的话就需要将索引往后加。

class Solution {
public:
int minSubArrayLen(int s, vector<int>& nums) {
int start=0;
int end=0;
int minIndex=0;
int maxIndex=nums.size();
int sum=0;
bool flag=false;
while(start<=end)
{
if(sum>=s)
{
flag=true;
if((end-start)<=(maxIndex-minIndex))
{
minIndex=start;
maxIndex=end;
}
sum-=nums[start];
++start;
}
else
{
if(end<nums.size())
{
sum+=nums[end];
++end;
}
else
break;
}

}
if(flag)
return maxIndex-minIndex;
else
return 0;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: