Leetcode

来源:互联网 发布:音乐降调软件中文版 编辑:程序博客网 时间:2024/06/15 02:00

题目:

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.

解析:

/思路://设置两个变量l,r,求这个子数组里的值和sum//1.sum < s  r++//2.sum > s l++//直至r = nums.length -1class Solution {    public int minSubArrayLen(int s, int[] nums) {        int l = 0 ; int r = -1 ;        int sum = 0;        int res = nums.length + 1;        while ( l < nums.length){            if( r + 1 < nums.length && sum < s){                r++;                sum = sum + nums[r];            }            else{                sum = sum - nums[l];                l++;            }            if( sum >= s ){                res = Math.min( res, r + l -1);            }        }        if(res == nums.length + 1)            return 0;        return res;    }}