【数据结构与算法系列4】长度最小的子数组

news2024/11/14 22:01:13

给定一个含有 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

提示:

  • 1 <= target <= 109
  • 1 <= nums.length <= 105
  • 1 <= nums[i] <= 105
  • 使用滑动窗口算法

C++代码实现:

#include "array_algorithm.h"

int minSubArrayLen(int target, vector<int>& nums) {
    int resutlt_out = INT32_MAX;
    int sum = 0; 
    int i = 0; 
    int subarray_Length = 0; 
    for (int j = 0; j < nums.size(); j++) {
        sum += nums[j];
        
        while (sum >= target) {
            subarray_Length = (j - i + 1); 
            resutlt_out = resutlt_out < subarray_Length ? resutlt_out : subarray_Length;
            sum -= nums[i++];  // 通过删除子数组起始位置对应的值并使i加一,从子数组和的角度实现起始位置变化(即加1)。
        }
    }
    return resutlt_out == INT32_MAX ? 0 : resutlt_out;
}

在这里插入图片描述

python实现:

from typing import List

def minSubArrayLen(target: int, nums: List[int]) -> int:
        sub_array_len = 0
        sum = 0
        i = 0
        resutle_out = float('inf')

        for j in range(0, len(nums)):
                sum += nums[j]
                while sum >= target: 
                        sub_array_len = j - i + 1
                        resutle_out = min(resutle_out, sub_array_len)
                        sum -= nums[i]
                        i += 1
        return resutle_out if resutle_out != float('inf') else 0

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/985840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

读书笔记-《ON JAVA 中文版》-摘要24[第二十一章 数组]

文章目录 第二十一章 数组1. 数组特性2. 一等对象3. 返回数组4. 多维数组5. 泛型数组6. Arrays的fill方法7. Arrays的setAll方法8. 数组并行9. Arrays工具类10. 数组拷贝11. 数组比较12. 流和数组13. 数组排序14. binarySearch二分查找15. 本章小结 第二十一章 数组 1. 数组特…

【Spring面试】一、SpringBoot启动优化与Spring IoC

文章目录 Q1、SpringBoot可以同时处理多少请求Q2、SpringBoot如何优化启动速度Q3、谈谈对Spring的理解Q4、Spring的优缺点Q5、Spring IoC容器是什么&#xff1f;作用与优点&#xff1f;Q6、Spring IoC的实现机制是什么Q7、IoC和DI的区别是什么Q8、紧耦合与松耦合的区别&#xf…

算法训练day38|动态规划 part01(理论基础、LeetCode509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯)

文章目录 理论基础什么是动态规划动态规划的解题步骤 509. 斐波那契数思路分析代码实现思考总结 70. 爬楼梯思路分析代码实现思考总结 746. 使用最小花费爬楼梯思路分析代码实现 理论基础 什么是动态规划 动态规划&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c…

【虚拟机开不了】linux、centOS虚拟机出现entering emergency mode解决方案

按他的操作输入journalctl之后输入shiftg到日志最后查看报错发现是xfs&#xff08;dm-0有问题&#xff09; xfs_repair -v -L /dev/dm-0 reboot解决问题

生信豆芽菜-XGboost构建诊断模型

网址&#xff1a;http://www.sxdyc.com/xgboostBuilds 1、准备数据 训练集表达谱数据 训练集样本分组数据 验证集表达谱数据 验证集样本分组数据 2、提交等待运行结果即可 当然&#xff0c;如果不清楚数据是什么样的&#xff0c;可以选择下载我们的示例数据&#…

PostMan传时间参数一次性发送多次请求

文章目录 1. Date类型的参数&#xff0c; "date": "2023-09-07 22:01:51"格式会报错2. 在Pre-request Script预置时间3. 使用postman一次性发送多次请求 1. Date类型的参数&#xff0c; “date”: "2023-09-07 22:01:51"格式会报错 2. 在Pre-req…

NumPy模块:Python科学计算神器之一

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、…

巨人互动|Google海外户Google分析的基础概念

Google Analytics&#xff08;谷歌分析&#xff09;是最受欢迎的网站分析工具之一。它为网站管理员提供了深入了解其网站访问者的机会&#xff0c;并通过数据分析提供有关网站流量、用户行为和转化率的洞察。 1、跟踪代码&#xff08;Tracking Code&#xff09; 跟踪代码是嵌入…

网络技术二十二:NATPPP

NAT 转换流程 产生背景 定义 分类 常用命令 PPP PPP会话建立过程 认证 PPP会话流程

pdf怎么转换成dwg格式?简单转换方法分享

当我们需要在CAD中编辑PDF文件中的向量图形时&#xff0c;将PDF转换成DWG格式是一个非常好的选择。因为PDF是一种非常流行的文档格式&#xff0c;很多时候我们会接收到PDF文件&#xff0c;但是PDF文件中的向量图形无法直接在CAD中编辑。而将PDF转换成DWG格式后&#xff0c;就可…

米贸搜什么是网站排名流量

当谈到数字营销时&#xff0c;你的网站应该作为线上营销的中心枢纽。包括&#xff1a;Ads付费广告、EDM邮件营销、SEO搜索引擎优化等都旨在吸引用户访问你的网站&#xff0c;并在网站上进行深度转化。 被广泛应用且最有效的营销策略之一就是SEO&#xff0c;流量排名是衡量网站受…

Editplus小技巧:一次删除连续的多个空格

Editplus小技巧&#xff1a; 一次删除连续的多个空格 AltDel 请看上图&#xff0c;文件中的多个空格 请看上图&#xff0c;使用快捷键很快就删除了&#xff0c;有点Vim的感觉&#xff0c;爽&#xff01; 查看Editplus更多的快捷键&#xff1a; Tools>>Preferences 如…

学习Harmony之前必了解的术语,否则一脸懵

以下开发前必须了解 1. HarmonyOS SDK --- 官方SDK 2. DevEco Studio 官方开发工具 DevEco Studio 3.1配套支持HarmonyOS 3.1版本及以上的应用及服务开发&#xff0c;提供了代码智能编辑、低代码开发、双向预览等功能&#xff0c;以及轻量构建工具DevEco Hvigor 、本地模…

WMS系统中的出入库实时监控

一、定义&#xff1a; 出入库实时监控是指通过仓储管理系统&#xff08;WMS&#xff09;对仓库内部的物流活动进行实时跟踪、监控和控制的过程。它涉及到对货物的进出仓库、货位的变动、库存的数量和状态等信息的及时记录和更新&#xff0c;以便企业能够准确掌握库存情况、优化…

USB Server集中管控加密狗,浙江省电力设计院正在用

近日&#xff0c;软件加密狗的分散管理和易丢失性&#xff0c;给拥有大量加密狗的浙江省电力设计院带来了一系列的问题。好在浙江省电力设计院带及时使用了朝天椒USB Server方案&#xff0c;实现了加密狗的集中安全管控&#xff0c;避免了加密狗因为管理不善和遗失可能带来的巨…

智能配电房管理

智能配电房管理依托电易云-智慧电力物联网&#xff0c;利用先进技术手段&#xff0c;对配电房进行智能化、自动化的管理&#xff0c;以提高配电房的安全性、可靠性和效率。 智能配电房管理包括&#xff1a; 1.实时监测&#xff1a;通过传感器、监控设备等手段&#xff0c;对配…

小程序:实现翻页功能(解决数据过载)

效果 核心代码 ①wxml设置翻页标签 <view class"pagination" wx:if"{{list.length>0}}"> <view class"page-button" bindtap"prevPage">上一页</view> <view class"page-info">{{ page }}<…

Friend.tech热潮未过,在推特刷屏的TipCoin又是个啥?

Web3社交赛道风起云涌&#xff0c;Friend.tech的热潮还没过&#xff0c;最近又有一款名为Tip Coin社交项目在X&#xff08;前Twitter&#xff09;开始刷屏。 TipCoin作为一款社交类区块链项目依托于X平台&#xff0c;用户通过在X平台上发布内容来进行“挖矿”&#xff0c;获得项…

无涯教程-JavaScript - BITAND函数

描述 BITAND函数返回两个数字的按位" AND"。 语法 BITAND (number1, number2)争论 Argument描述Required/Optionalnumber1 Must be in decimal form and greater than or equal to 0.Requirednumber2Must be in decimal form and greater than or equal to 0.Req…

Vuepress样式修改内容宽度

1、相关文件 一般所在目录node_modules\vuepress\theme-default\styles\wrapper.styl 2、调整宽度&#xff0c;截图中是已经调整好的&#xff0c;在我电脑上显示刚刚好。