leetcode数组-长度最小的子数组

题目

题目链接:https://leetcode.cn/problems/minimum-size-subarray-sum/
给定一个含有 n个正整数的数组和一个正整数 target** 。**
找出该数组中满足其总和大于等于target的长度最小的 子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组,返回 0

输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。

class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {}
};
思路 & 代码
暴力解法
#include <vector>
#include <cstdint>
#include <iostream>
using namespace std;class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int sum = 0;int subLength = 0;int result = INT32_MAX;// 需要<cstdint>头文件for(int i = 0; i < nums.size(); i++){sum = 0; // 是子序列的和,设置为0,用于下一个子序列的初始值for(int j = i; j < nums.size(); j++) {sum += nums[j];if (sum >= target){subLength = j - i + 1;result = result > subLength ? subLength : result;break; // 找到符合条件的子序列,就退出当前的 j 的for 循环。}}}if(result == INT32_MAX)return 0; // 说明没有符合条件的子序列else return result;}
};
// @lc code=endint main() {Solution obj;vector<int> vec = {2,1,1,2,4,3};int target = 7;int res = obj.minSubArrayLen(target, vec);cout << res << endl;
}

时间复杂度:O(n^2)
空间复杂度:O(1)

滑动窗口

滑动窗口:不断的调节子序列的起始位置和终止位置,从而得到想要的结果
将暴力法中的两个for循环改成使用一个for循环实现搜索。

  • 窗口内是什么?
    • 满足其和 >= s 的长度最小的 连续 子数组
  • 如何移动窗口的起始位置?
    • 当前窗口的值 >= s,就要往前移动了
  • 如何移动窗口的结束位置?
    • 窗口的结束位置就是遍历数组的指针,也就是for循环里的索引
class Solution {
public:int minSubArrayLen(int target, vector<int>& nums) {int sum = 0;int subLength = 0;int result = INT32_MAX;// 需要<cstdint>头文件int i = 0;for(int j = 0; j < nums.size(); j++) {sum += nums[j];while (sum >= target){subLength = j - i + 1;result = result > subLength ? subLength : result;sum -= nums[i];i++;}}if(result == INT32_MAX)return 0; // 说明没有符合条件的子序列else return result;}
};

时间复杂度:O(n)
空间复杂度:O(1)
每个元素在滑动窗后进来操作一次,出去操作一次,每个元素都是被操作两次,所以时间复杂度是 2 × n 也就是O(n)

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

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

相关文章

一周学会Pandas2 Python数据处理与分析-Jupyter Notebook安装

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Jupyter (Project Jupyter | Home&#xff09;项目是一个非营利性开源项目&#xff0c;于2014年由IPython项目中诞生…

前端页面鼠标移动监控(鼠标运动、鼠标监控)鼠标节流处理、throttle、限制触发频率(setTimeout、clearInterval)

文章目录 使用lodashjs库手动实现节流&#xff08;通过判断之前设定的定时器setTimeout是否存在&#xff09; 使用lodashjs库 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Com…

java流程控制04:if选择结构

选择结构 if单选择结构 if双选择结构 if多选择结构 嵌套的if结构 switch多选择结构 if单选择结构 我们很多时候需要去判断一个东西是否可行&#xff0c;然后我们才去执行&#xff0c;这样一个过程在程序中用if语句来表示 语法&#xff1a; if(布尔表达式){//如果布尔表达…

在uniapp中,video比普通的标签层级高解决问题

<view style"position: relative;"><video style"position: absolute;z-index:-1"></video><view style"position: absolute;z-index:999"></view> </view> 上面代码并没有解决view的层级比video高的问题&…

基于R语言与MaxEnt的物种分布建模全流程解析:从算法优化到科研制图实战

随着全球气候变化与生物多样性保护需求的加剧&#xff0c;物种分布模型&#xff08;Species Distribution Model, SDM&#xff09;已成为生态学、保护生物学研究的核心工具。MaxEnt模型凭借其‌对小样本数据的强适应性‌和‌环境变量非线性关系的解析能力‌&#xff0c;成为SDM…

DPDI版本升级说明

Dispatch PDI v2.0.3版本升级说明 自Dispatch PDI社区版全新版本V2.0.0于2025 年3月25日发布以来&#xff0c;我们始终紧密关注用户动态&#xff0c;并全力协助用户线上完成从V0.0.4到V2.0.0的迁移工作。在短短一周内&#xff0c;我们成功助力约90%的用户完成了迁移。在此期间…

大钲资本押注儒拉玛特全球业务,累计交付超2500条自动化生产线儒拉玛特有望重整雄风,我以为它破产倒闭了,担心很多非标兄弟们失业

1. 交易概况 时间与主体:大钲资本于2025年4月1日正式宣布完成对儒拉玛特自动化技术(苏州)有限公司及其全球子公司和关联企业的收购。交易通过大钲资本旗下美元基金设立的儒拉玛特(新加坡)公司作为控股主体进行,交易金额未披露。 收购范围:包括儒拉玛特亚太、欧洲、北美等…

LabVIEW 调用 Python 函数

此程序是 LabVIEW 调用 Python 函数实现双精度数相加的典型示例。通过 LabVIEW 搭建交互框架&#xff0c;借助 “Open Python Session” 创建 Python 代码运行环境&#xff0c;定位 Python 模块路径后调用 “Add” 函数&#xff0c;最终实现数据处理并关闭会话。整个流程展现了…

基于SpringBoot的“考研学习分享平台”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“考研学习分享平台”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体功能结构图 局部E-R图 系统首页界面 …

恒盾C#混淆加密卫士 - 混淆加密保护C#程序

对于大部分C#开发者来说&#xff0c;写完代码点个发布就完事儿了&#xff0c;但你可能不知道——用记事本都能扒开你编译好的程序&#xff01;像dnSpy这类反编译工具&#xff0c;分分钟能把你的EXE/DLL变回原汁原味的源代码&#xff0c;商业机密赤裸裸曝光不说&#xff0c;竞争…

selectdb修改表副本

如果想修改doris&#xff08;也就是selectdb数据库&#xff09;表的副本数需要首先确定是否分区表&#xff0c;当前没有数据字典得知哪个表是分区的&#xff0c;只能先show partitions看结果 首先&#xff0c;副本数不应该大于be节点数 其次&#xff0c;修改期间最好不要跑业务…

【嵌入式-stm32电位器控制以及旋转编码器控制LED亮暗】

嵌入式-stm32电位器控制LED亮暗 任务1代码1Key.cKey.hTimer.cTimer.hPWM.cPWM.hmain.c 实验现象1任务2代码2Key.cKey.hmain.c 实验现象2问题与解决总结 源码框架取自江协科技&#xff0c;在此基础上做扩展开发。 任务1 本文主要介绍利用stm32f103C8T6实现电位器控制PWM的占空比…

图扑可视化点亮智慧城市垃圾分类新未来

图扑基于 HT 开发的智慧城市废弃物可视化管理系统&#xff0c;通过智能感知与三维可视化技术&#xff0c;构建全流程数字化监管平台。系统实现固体废物从源头投放到终端处置的全程可视化追踪&#xff0c;提供智能收运路径规划与资源回收管理方案&#xff0c;助力城市环境治理向…

Elasticsearch安全加固指南:启用登录认证与SSL加密

在之前文章中我们介绍了Elasticsearch安全与权限控制&#xff0c;本篇文章我们将详细介绍 启用登录认证与SSL加密实践配置操作 。 1 为什么需要安全加固&#xff1f; Elasticsearch默认不启用安全功能&#xff0c;会导致以下风险&#xff1a; 未授权访问&#xff1a;任何人都能…

前端知识点---本地存储(javascript)

localStorage 是浏览器提供的一个 本地存储 API&#xff0c;可以在用户的浏览器中存储数据&#xff0c;数据不会随页面刷新而丢失。 1. 基本用法 (1) 存储数据&#xff08;setItem&#xff09; localStorage.setItem("username", "zhangsan");存储 “use…

神经网络能不能完全拟合y=x² ???

先说结论&#xff1a;关键看激活函数的选择 ReLU神经网络对非线性函数的拟合分析 ReLU神经网络对非线性函数&#xff08;如 y x 2 y x^2 yx2&#xff09;的拟合只能是逼近&#xff0c;而无法实现数学意义上的完全重合。这一结论源于ReLU的分段线性本质与目标函数的非线性结…

14.流程自动化工具:n8n和家庭自动化工具:node-red

n8n 安装 docker方式 https://docs.n8n.io/hosting/installation/docker/ #https://hub.docker.com/r/n8nio/n8n docker pull n8nio/n8n:latest docker rm -f n8n; docker run -it \ --network macvlan --hostname n8n \ -e TZ"Asia/Shanghai" \ -e GENERIC_TIME…

哈密尔顿路径(Hamiltonian Path)及相关算法题目

哈密尔顿路径要求访问图中每个顶点恰好一次&#xff0c;通常用于解决旅行商问题&#xff08;TSP&#xff09;或状态压缩DP问题。 哈密尔顿路径&#xff08;Hamiltonian Path&#xff09;是指在一个图中经过每个顶点恰好一次的路径。如果这条路径的起点和终点相同&#xff08;即…

面试算法高频02-树

树类型对比 数据结构定义节点特点遍历方式常见操作时间复杂度&#xff08;平均&#xff09;时间复杂度&#xff08;最坏&#xff09;空间复杂度&#xff08;最坏&#xff09;与其他结构关系应用场景树有根节点&#xff0c;分层级&#xff0c;包含父子、兄弟节点及子树关系的非…

数论4 组合数

目录 前言 求法一 代码 求法二 代码 求法三 代码 求法四 代码 前言 今天要将最后一部分&#xff0c;主要涉及组合数的四种求法。 前置知识 组合数的通项公式&#xff1a; 组合数的递推公式&#xff1a; 卢卡斯定理&#xff1a; 我们今天需要求的四种求法主要基…