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;
    }
};
相关推荐
菜菜的顾清寒2 分钟前
力扣HOT100(16)除了自身以外数组的乘积
算法·leetcode·职场和发展
sali-tec2 分钟前
C# 基于OpenCv的视觉工作流-章45-圆卡尺
图像处理·人工智能·opencv·算法·计算机视觉
￰meteor11 分钟前
【函数指针】
c++
Huangjin007_12 分钟前
【C++类和对象(四)】手撕 Date 类:赋值运算符重载 + 日期计算
开发语言·c++
会编程的土豆13 分钟前
【数据结构与算法】二叉树遍历 集合
数据结构·算法
老虎062714 分钟前
LeetCode热题100 刷题笔记(第六天)双指针 「 盛最多水的容器」
笔记·算法·leetcode
ZPC821014 分钟前
fanuc 机器人 pr 寄存器数据如何绑定 GO 绑定DO
人工智能·算法·机器人
长不大的小Tom16 分钟前
快速学习 C/C++ 并进阶的路线
开发语言·c++
LUVK_25 分钟前
第六章 图
数据结构·考研·算法·深度优先·图论·408
南境十里·墨染春水35 分钟前
C++笔记 继承关系中构造和析构顺序(面向对象)
开发语言·c++·笔记