406. 和大于S的最小子数组

题目描述

给定一个由 n 个正整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组(连续)。如果无解,则返回 -1。

样例
给定数组 [2,3,1,2,4,3] 和 s = 7, 子数组 [4,3] 是该条件下的最小长度子数组

解题思路
设立两个不断移动的指针l和r,统计满足条件的[l,r]区间的最小值

代码

public class Main {
    /*
     * @param nums: an array of integers
     * @param s: An integer
     * @return: an integer representing the minimum size of subarray
     */
    public int minimumSize(int[] nums, int s) {
        // write your code here
        int l = 0;
        int r = -1;
        int result = nums.length+1;
        int sum = 0 ;
        while (r!=nums.length){
            if (sum>=s){
                sum-=nums[l];
                l++;
            }
            else if (sumif(rif (sum>=s){
                result=Math.min(result,r-l+1);
            }
        }
        if (result==nums.length+1){
            return -1;
        }
        return result;
    }
}

你可能感兴趣的:(数组,双指针)