Minimum Size Subarray Sum

Minimum Size Subarray Sum

问题分析

找出总和大于目标值的最短子串,想到的方法是用双指针遍历,前面的指针先前走直到大于目标,此时后面的指针再向前走,直到小于目标。

代码

class Solution {
public:
     int minSubArrayLen(int s, vector& nums) {
        int i=0,j=0;
        int sum=0,min_len=INT_MAX,len=0;
        while(j= s){
                return 1;
            }
            else{
                len += 1;
                sum += nums[j];
                while(sum < s && j < nums.size()){
                    j++;
                    len += 1;
                    sum += nums[j];
                }
                if(j == nums.size() && min_len == INT_MAX) return 0 ;
                if(j == nums.size()) return min_len;
                while (sum - nums[i] >= s) {
                    sum -= nums[i];
                    i++;
                    len--;
                }
                min_len = min_len < len ? min_len : len;
                sum -= nums[i];
                i++;
                len--;
                j++;
            }
        }
        if (len == 0) return 0;
        return min_len;
    }
};

Maximum Average Subarray I

最小平均子序列,求出连续k个子序列的最大平均值。滑动窗口的想法,以第一个长度为k的子序列为基准,向后遍历,遍历的过程用总和减第一个数加新的数得到新的和。

你可能感兴趣的:(Minimum Size Subarray Sum)