当前位置: 首页 > article >正文

LeetCode算法题——长度最小的子数组

题目描述

给定一个含有 n 个正整数的数组和一个正整数target。
找出该数组中满足其总和大于等于 target 的长度最小的子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

题解

解法一:暴力解法

思路: 该题可使用暴力解法求解,用双层for循环,计算每一种可能情况下的子数组长度并求得最小值。暴力解法在力扣上由于超时无法通过测试,因此不采用次方法。

解法二:滑动窗口解法

思路: 利用滑动窗口思路进行解决,定义起始指针和终止指针,这里需要考虑的问题就是两个指针什么时候移动。终止指针:从头到尾逐步移动,起始指针:终止指针每向后移动一步,计算窗口内的元素总值sum,到sum大于等于目标值,则起始指针向后移动,直到窗口内元素总值小于目标值则停止移动,并记录下当前子数组的长度。但终止指针从头到尾遍历完成后所得到的最小滑动窗口长度即为所求值。
在这里插入图片描述

总结

  • 滑动窗口机制是一种用于高效处理数组、字符串相关算法的策略。它借助两个指针界定出一个动态的“窗口”,起始时指针多位于序列开头。运算中,右指针右移来扩展窗口,不断纳入新元素,累积所需信息,像统计数量、求和;一旦窗口满足既定条件,左指针右移,收缩窗口,剔除多余元素,同时更新满足要求的结果。借由这样有节奏的窗口滑动,只需线性遍历一次数据序列,就将原本可能O (n²)的时间复杂度降为O(n),还常维持O(1)的空间复杂度,极为适配求和、子串匹配、频次统计这类问题。

http://www.kler.cn/a/464094.html

相关文章:

  • 智慧工地解决方案 1
  • 设计心得——流程图和数据流图绘制
  • 【微软,模型规模】模型参数规模泄露:理解大型语言模型的参数量级
  • 小波滤波器处理一维信号-附Matlab源代码
  • 生态碳汇涡度相关监测与通量数据分析实践技术应用
  • LLM(十二)| DeepSeek-V3 技术报告深度解读——开源模型的巅峰之作
  • 大模型的prompt的应用一
  • 数据挖掘——集成学习
  • Java-写一个计数器
  • mac下载Homebrew安装nvm
  • 微服务间通信的端口开放性探究:从单机到多机的转变
  • <<零基础学C++,类和对象(上)--类的定义,访问限定符,类域,实例化>>
  • 第11章 汇编语言--- 内存模型概述
  • 文件本地和OSS上传
  • 虚拟机中的时统卡功能和性能调优
  • AI 驱动研发模式升级,蓝凌软件探索效率提升之道
  • 699: Arbitrage
  • 小组作业协同介绍
  • 代码随想录算法训练营第51期第32天 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • 基于Python的携程旅游景点数据分析与可视化
  • 【C++指针】知识点思维导图
  • 大语言模型提示技巧(二)-给模型时间思考
  • Unity2022接入Google广告与支付SDK、导出工程到Android Studio使用JDK17进行打包完整流程与过程中的相关错误及处理经验总结
  • 【开源免费】基于SpringBoot+Vue.JS音乐网站(JAVA毕业设计)
  • pdf预览 报:Failed to load module script
  • 信息搜集250102