美文网首页
leetcode209 长度最小的数组

leetcode209 长度最小的数组

作者: CVD | 来源:发表于2020-06-30 14:59 被阅读0次

    给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。

    示例:

    输入:s = 7, nums = [2,3,1,2,4,3]
    输出:2
    解释:子数组 [4,3] 是该条件下的长度最小的连续子数组

    解法:
    1.使用双指针的方式

        public int minSubArrayLen(int s, int[] nums) {
            int n = nums.length;
            if (n == 0) {
                return 0;
            }
            int ans = Integer.MAX_VALUE;
            int start = 0, end = 0;
            int sum = 0;
            while (end < n) {
                sum += nums[end];
                // 注意是while 而不是if
                while (sum >= s) {
                    // 更新ans大小
                    ans = Math.min(ans, end - start + 1);
                    sum -= nums[start];
                    start++;
                }
                end++;
            }
            return ans == Integer.MAX_VALUE ? 0 : ans;
        }
    

    相关文章

      网友评论

          本文标题:leetcode209 长度最小的数组

          本文链接:https://www.haomeiwen.com/subject/xqdxqktx.html