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)

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

相关推荐
不会计算机的捞地5 分钟前
【数据结构入门训练DAY-21】信息学奥赛一本通T1334-围圈报数
算法
小王努力学编程19 分钟前
美团2024年春招第一场笔试 C++
开发语言·数据结构·c++·学习·算法
superior tigre23 分钟前
C++学习:六个月从基础到就业——STL算法(一) 基础与查找算法
c++·学习·算法
刚入门的大一新生23 分钟前
C++初阶-类和对象(下)
开发语言·c++·算法
清羽_ls1 小时前
leetcode-位运算
前端·算法·leetcode·位运算
猫猫头有亿点炸1 小时前
C语言中小写字母转大写字母
c语言·开发语言·算法
天天扭码2 小时前
一杯珍珠奶茶的时间吃透一道高频面试算法题——搜索二位矩阵Ⅱ
前端·算法·面试
pljnb2 小时前
聚类算法(K-means、DBSCAN)
算法·kmeans·聚类
2301_807611492 小时前
46. 全排列
c++·算法·leetcode·深度优先·回溯
天天扭码2 小时前
一杯蜜桃四季春的时间吃透一道高频面试算法题——旋转图像
前端·算法·面试