LeetCode209—Minimum Size Subarray Sum

来源:互联网 发布:招python测试工程师 编辑:程序博客网 时间:2024/04/29 19:41

终于不用找实习了,恢复一下学习的节奏。

原题

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