LeetCode 209. 长度最小的子数组 (C++实现)

1. 题目描述

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

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

子数组

numsl, numsl+1, ..., numsr-1, numsr\] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 **示例 1:** 输入:target = 7, nums = \[2,3,1,2,4,3

输出:2

解释:子数组 [4,3] 是该条件下的长度最小的子数组。

示例 2:

输入:target = 4, nums = [1,4,4]

输出:1

示例 3:

输入:target = 11, nums = [1,1,1,1,1,1,1,1]

输出:0

2. 解题思路

首先定义慢指针slow和快指针fast,遍历数组元素,先移动快指针,如果快指针和慢指针中间的元素和大于等于target,记录长度,移动慢指针,遍历完成之后选取最小长度返回。

3. 代码实现

cpp 复制代码
class Solution {
public:
    int minSubArrayLen(int target, vector<int>& nums) {
        int slow = 0;
        int sum = 0;
        int ans = INT_MAX;
        for (int fast = 0; fast < nums.size(); fast++)
        {
            sum += nums[fast];
            while(sum >= target)
            {
                ans = min(ans, fast - slow + 1);
                sum -= nums[slow];
                slow++;
            }
        }
        return ans <= nums.size() ? ans : 0;
    }
};
相关推荐
dragoooon3420 小时前
[hot100 NO.91~95]
算法
June bug20 小时前
(#字符串处理)字符串中第一个不重复的字母
python·leetcode·面试·职场和发展·跳槽
windows_620 小时前
【无标题】
算法
jojo_zjx20 小时前
GESP 24年12月2级 数位和
c++
自由的好好干活20 小时前
PCI9x5x驱动移植支持PCI9054在win7下使用3
c++·驱动开发
踢足球092920 小时前
寒假打卡:2026-01-24
数据结构·算法
亲爱的非洲野猪20 小时前
动态规划进阶:多维DP深度解析
算法·动态规划
AlenTech21 小时前
197. 上升的温度 - 力扣(LeetCode)
算法·leetcode·职场和发展
橘颂TA21 小时前
【Linux 网络】TCP 拥塞控制与异常处理:从原理到实践的深度剖析
linux·运维·网络·tcp/ip·算法·职场和发展·结构与算法
tobias.b1 天前
408真题解析-2010-9-数据结构-折半查找的比较次数
java·数据结构·算法·计算机考研·408真题解析