Leetcode: Minimum Size Subarray Sum

来源:互联网 发布:淘宝天猫优惠券怎么领 编辑:程序博客网 时间:2024/05/21 07:57

Given an array of n positive integers and a positive integer s, find the minimal length of a 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.

click to show more practice.

class Solution {public:    int minSubArrayLen(int s, vector<int>& nums) {        int left, right, min = 0xfffffff, sum = 0;        int n = nums.size();        if (n == 0) return 0;        sum = nums[0];        left = 0;        right = 0;        while (1) {            if (sum < s) {                right++;                if (right >= n) {                    break;                }                sum += nums[right];            } else {                min = min > (right - left + 1) ? right - left + 1 : min;                if (min == 1) return 1;// Game Over                sum -= nums[left];                left++;            }        }        return min == 0xfffffff ? 0 : min;    }};
0 0