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)

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

相关推荐
程序员雷欧6 小时前
大厂计算机网络面试高频题
计算机网络·面试·职场和发展
鱼很腾apoc7 小时前
【学习篇】第20期 超详解 C++ 多态:从语法规则到底层原理
java·c语言·开发语言·c++·学习·算法·青少年编程
JAVA学习通9 小时前
美团AI面试 实习一面面经
面试·职场和发展
小许同学记录成长9 小时前
三维重建技术文档
算法·无人机
卷帘依旧9 小时前
怎么保证AI生成的代码是符合预期的
面试
卷帘依旧10 小时前
RAG(Retrieval-Augmented Generation)完全指南(deepseek生成)
面试
卷帘依旧10 小时前
知识切分与维护相关知识介绍
面试
卷帘依旧10 小时前
RAG 的设计问题与局限性分析
面试
小为资料库10 小时前
2026年5月16日教资面试真题汇总(中小幼各科全)
面试·职场和发展