LeetCode 面试经典150题 209.长度最小的子数组

题目

给定一个含有 n个正整数的数组和一个正整数 target

找出该数组中满足其总和大于等于target的长度最小的 连续子数组

[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度**。** 如果不存在符合条件的子数组,返回 0

思路:双指针

代码

java 复制代码
class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int n = nums.length;
        int ans = n + 1;
        int left = 0;
        int sum = 0;
        for (int right = 0; right < n; right++) {
            sum += nums[right];
            while (sum - nums[left] >= target) {
                sum -= nums[left++];
            }
            if (sum >= target) 
                ans = Math.min(ans, right - left + 1);
        }
        return ans <= n ? ans : 0;
    }
}

性能:时间复杂度O(n) 空间复杂度O(1)

注意:长度不固定的叫做双指针,长度固定的叫做滑动窗口。习惯上而已,只是叫法不同,本质是同一个东西。

相关推荐
稚辉君.MCA_P8_Java10 小时前
Gemini永久会员 Java中的四边形不等式优化
java·后端·算法
稚辉君.MCA_P8_Java10 小时前
通义 插入排序(Insertion Sort)
数据结构·后端·算法·架构·排序算法
进击的野人10 小时前
深入理解 JavaScript Promise:原理、用法与实践
javascript·面试·ecmascript 6
无限进步_10 小时前
C语言动态内存的二维抽象:用malloc实现灵活的多维数组
c语言·开发语言·数据结构·git·算法·github·visual studio
有意义11 小时前
JavaScript 词法作用域与闭包:从底层原理到实战理解
前端·javascript·面试
Swift社区11 小时前
LeetCode 432 - 全 O(1) 的数据结构
数据结构·算法·leetcode
逝玄11 小时前
关于图灵停机问题不可判定性证明
算法·计算机科学
AY呀11 小时前
黑马喽大闹天宫与JavaScript的寻亲记:作用域与作用域链全解析
前端·javascript·面试
低客的黑调11 小时前
为你的项目选择一个适合的[垃圾收集器]
java·jvm·算法
芬加达11 小时前
leetcode34
java·数据结构·算法