首页 > 编程语言 >LeetCode 209. 长度最小的子数组 (C++实现)

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

时间:2024-12-26 09:31:15浏览次数:11  
标签:slow target nums 209 fast int C++ 数组 LeetCode

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. 代码实现

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;
    }
};

标签:slow,target,nums,209,fast,int,C++,数组,LeetCode
From: https://blog.csdn.net/qq_38412266/article/details/144675389

相关文章

  • 【C/C++】字符数组和string字符串:从C语言到C++的演变
    字符数组和string字符串:从C语言到C++的演变在C语言和C++的编程中,字符数组和字符串(string)是非常重要的基础数据类型。它们在实际编程中常用于存储和操作文本数据,但是这两种类型的处理方式有所不同。在这篇博客中,我们将详细讲解字符数组和string字符串,从C语言的字符数组到C++......
  • leetcode 1045
    leetcode1045selectcustomer_idfrom(selectcustomer_id,count(*)mfrom(selectdistinct*fromCustomer)agroupbycustomer_idhavingcount(*)in(selectcount(*)fromProduct))p;日记23号是周一,到今天圣诞节都没有去上班,请假了,主......
  • leetcode热题100(54. 螺旋矩阵)c++
    链接:54.螺旋矩阵-力扣(LeetCode)给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例1:输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例2:输入:matrix=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2......
  • LeetCode-两数之和(001)
    一.题目描述给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。二.示例 示例1:输入:nu......
  • 【华为OD-E卷-最小调整顺序次数、特异性双端队列 100分(python、java、c++、js、c)】
    【华为OD-E卷-最小调整顺序次数、特异性双端队列100分(python、java、c++、js、c)】题目有一个特异性的双端队列,该队列可以从头部或尾部添加数据,但是只能从头部移出数据。小A依次执行2n个指令往队列中添加数据和移出数据。其中n个指令是添加数据(可能从头部添加、也可能从......
  • 【华为OD-E卷-取出尽量少的球 100分(python、java、c++、js、c)】
    【华为OD-E卷-取出尽量少的球200分(python、java、c++、js、c)】题目某部门开展FamilyDay开放日活动,其中有个从桶里取球的游戏,游戏规则如下:有N个容量一样的小桶等距排开,且每个小桶都默认装了数量不等的小球,每个小桶装的小球数量记录在数组bucketBallNums中,游戏开......
  • c++介绍
    警告⚠️:别眨眼,前方爆燃!带你感受火影的高能名场面!!!在计算机编程的广袤星空中,C++犹如一颗璀璨夺目的明珠,闪耀着独特而持久的光芒。它以其强大的功能、广泛的应用领域和深厚的技术底蕴,成为了无数程序员心中的挚爱与利器。C++诞生于20世纪80年代,由BjarneStroustrup基......
  • 《 C++ 点滴漫谈: 十二 》让内存飞一会儿:C++ Union 的神奇魔法
    摘要C++中的union关键字是一种独特的内存共享机制,通过允许多个成员共享同一段内存,提供了高效的存储方式和灵活的操作手段。本博客深入探讨了union的基础概念、成员规则、构造函数与析构函数的使用,以及现代C++提供的新特性支持。同时,我们分析了union的典型应用场景......
  • 《 C++ 点滴漫谈: 十一 》C++ 面向对象的秘密武器:全面掌握 class 的超能力
    摘要在C++中,class是面向对象编程的核心,它将数据和操作数据的函数封装在一起,从而提高代码的可维护性和复用性。本文详细探讨了C++class关键字的各个方面,包括类的基本概念、成员与访问控制、构造函数与析构函数、继承与多态、内存管理等内容。通过分析class与struct......
  • 深入解析 gflags:C++ 配置库的强大功能
    在现代软件开发中,命令行参数的处理已经成为构建灵活、可配置应用程序的关键技术之一。对于许多C++项目来说,使用一个高效、易用的库来处理命令行参数显得尤为重要。gflags就是这样一个流行的命令行参数解析库,它简化了配置选项的定义、处理和错误检查。本文将深入探讨gflags库......