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)

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

相关推荐
yidaqiqi16 分钟前
[目标检测] YOLO系列算法讲解
算法·yolo·目标检测
飞天狗11120 分钟前
2024 山东省ccpc省赛
c++·算法
卡尔曼的BD SLAMer32 分钟前
计算机视觉与深度学习 | Python实现EMD-SSA-VMD-LSTM-Attention时间序列预测(完整源码和数据)
python·深度学习·算法·cnn·lstm
珊瑚里的鱼1 小时前
【滑动窗口】LeetCode 1658题解 | 将 x 减到 0 的最小操作数
开发语言·c++·笔记·算法·leetcode·stl
落樱弥城1 小时前
角点特征:从传统算法到深度学习算法演进
人工智能·深度学习·算法
共享家95272 小时前
哈希的原理、实现
c++·算法
进击的小白菜2 小时前
用Java实现单词搜索(LeetCode 79)——回溯算法详解
java·算法·leetcode
珂朵莉MM2 小时前
2024 睿抗机器人开发者大赛CAIP-编程技能赛-专科组(国赛)解题报告 | 珂学家
开发语言·人工智能·算法·leetcode·职场和发展·深度优先·图论
小智学长 | 嵌入式2 小时前
进阶-数据结构部分:2、常用排序算法
java·数据结构·算法
少了一只鹅2 小时前
字符函数和字符串函数
c语言·算法