【力扣】209. 长度最小的子数组

209. 长度最小的子数组

题目描述

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

进阶:

  • 如果你已经实现 O(n) 时间复杂度的解法, 请尝试设计一个 O(n log(n)) 时间复杂度的解法。

解题方法

  • C 暴力双循环——超时
int mymin(int a, int b) {if (a > b)return b;elsereturn a;
}int minSubArrayLen(int target, int* nums, int numsSize) {int count = INT_MAX;if (numsSize == 0) {return 0;}for (int i = 0; i < numsSize; i++) {int sum = 0;for (int j = i; j < numsSize; j++) {sum = sum + nums[j];if (sum >= target) {count = mymin(count, j - i + 1);break;}}}return count == INT_MAX ? 0 : count;
}
  • C 滑动窗口法
int mymin(int a, int b) {if (a > b)return b;elsereturn a;
}int minSubArrayLen(int target, int* nums, int numsSize) {int count = INT_MAX;int start = 0, end = 0; // 定义窗口开始、结束int sum = 0;if (numsSize == 0) {return 0;}while (end < numsSize) {sum = sum + nums[end]; // 求窗口中元素和while (sum >= target) {count = mymin(count, end - start + 1); // 求最小窗口sum = sum - nums[start];               // 求和start++;                               // 缩小窗口}end++; // 增大窗口}return count == INT_MAX ? 0 : count;
}

复杂度分析
时间复杂度为 O(n),其中 n 是数组的长度。
空间复杂度为 O(1)。

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

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

相关文章

A7 STM32_HAL库函数 之 LCORTEX通用驱动程序所有函数的介绍及使用

A1 STM32_HAL库函数 之 HAL系统驱动程序所有函数的介绍及使用 1 LCORTEX通用驱动程序预览1.1 HAL_NVIC_SetPriorityGrouping1.2 HAL_NVIC_SetPriority1.3 HAL_NVIC_EnableIRQ1.4 HAL_NVIC_DisableIRQ1.5 HAL_NVIC_SystemReset1.6 HAL_SYSTICK_Config1.7 HAL_MPU_Disable1.8 HAL…

亚信安慧AntDB:在数据的宇宙中探索无限可能

亚信安慧AntDB数据库探索出自主可控的数据库架构&#xff0c;在架构层面消除应用对特定数据库的依赖。它以其稳定可靠的性能和高度可伸缩性而备受赞誉。AntDB数据库架构通过引入创新的分布式体系结构&#xff0c;充分利用集群资源&#xff0c;实现数据的高效分布和快速存取。 …

浅谈对进程的理解

一、多任务的概念 1、举个栗子 思考&#xff1a;我们在使用网盘下载资料的时候&#xff0c;为什么要多个任务同时下载呢&#xff1f; 答&#xff1a;多个任务同时执行可以大大提高程序的执行效率 2、提出问题 问题&#xff1a;利用我们目前所学的技术&#xff0c;我们能否…

输入框验证数字类型

校验大于0的数,且小数点后最多为八位小数 let k /^(?!0(\.0)?$)\d(\.\d{1,8})?$/; console.log(k.test(0.00000001)); // true console.log(k.test(0.00000000)); // false console.log(k.test(0.12)); // true console.log(k.test(12.12)); // true输入0-1的数字&#xf…

【计算机考研】408算法大题怎么练?

先说结论&#xff1a;基础阶段学好各个数据结构与&#xff0c;重点是数组、链表、树、图。然后强化阶段突破算法提 在基础阶段&#xff0c;并不需要过于专门地练习算法。相反&#xff0c;基础阶段的重点应该放在对各种数据结构原理的深入理解上。在我个人的经验中&#xff0c;…

python--异常处理

异常处理 例一&#xff1a; try: #可能出现异常代码 except&#xff1a; #如果程序异常&#xff0c;则立刻进入这儿 [finally: #不管是否捕获异常&#xff0c;finally语法快必须要执行&#xff01;&#xff01;&#xff01; #资源关闭&#xff0c;等各种非常重要的操作&…

HarmonyOS实战开发-如何使用 geolocation 实现获取当前位置经纬度

介绍 本示例使用 geolocation 实现获取当前位置的经纬度,然后通过 http 将经纬度作为请求参数,获取到该经纬度所在的城市。通过 AlphabetIndexer 容器组件实现按逻辑结构快速定位容器显示区域。 效果预览 使用说明 1.进入主页,点击国内热门城市,配送地址会更新为选择的城…

【Erlang】【RabbitMQ】Linux(CentOS7)安装Erlang和RabbitMQ

一、系统环境 查版本对应&#xff0c;CentOS-7&#xff0c;选择Erlang 23.3.4&#xff0c;RabbitMQ 3.9.16 二、操作步骤 安装 Erlang repository curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash安装 Erlang package s…

CAXA电子图版2019版 下载地址及安装教程

CAXA电子图板是一款由国内软件公司CAXA开发的专业CAD&#xff08;计算机辅助设计&#xff09;软件。它主要用于绘制和编辑各种类型的二维图纸和工程图纸&#xff0c;广泛应用于建筑、机械、电气和电子等行业。 CAXA电子图板具有以下主要功能和特点&#xff1a; 二维绘图&…

Godot 常用UI+布局容器简单介绍

文章目录 前言相关链接Canvasitem&#xff1a;画布Control&#xff1a;UI布局基类Container&#xff1a;布局容器基类AspectRatioContainer&#xff1a;伸缩居中布局BoxContainer&#xff1a;盒子布局ColorPicker:取色器 CenterContainer&#xff1a;不伸缩居中FlowContainer&a…

Java 那些诗一般的 数据类型 (下篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…

【RAG实践】Rerank,让大模型 RAG 更近一步

RAGRerank原理 上一篇【RAG实践】基于LlamaIndex和Qwen1.5搭建基于本地知识库的问答机器人 我们介绍了什么是RAG&#xff0c;以及如何基于LLaMaIndex和Qwen1.5搭建基于本地知识库的问答机器人&#xff0c;原理图和步骤如下&#xff1a; 这里面主要包括包括三个基本步骤&#…

MySQL数据库在Windows和Linux中各种日志的默认路径

1. 二进制日志&#xff08;Binary Log&#xff09; 在Linux系统中&#xff0c;二进制日志的默认路径通常为&#xff1a; /var/lib/mysql/hostname-bin.log 其中hostname是你的服务器主机名。如果没有特别配置&#xff0c;日志名可能是mysql-bin.log。 在Windows系统中&…

3.1k Star的特斯拉数据伴侣神器

微信公众号:[开源日记],分享10kStart的优质开源项目。 TeslaMate 适用于你的 Tesla 的功能强大的自托管数据记录器。 用 Elixir 编写数据存储在 Postgres 数据库使用 Grafana 进行可视化和数据分析车辆数据发布到本地 MQTT Broker GitHub数据 3.1k stars121 watching458 forks…

非关系型数据库Redis部署与常用命令

前言 Redis是一个高性能的开源内存数据库&#xff0c;常用于缓存、会话存储和实时数据处理&#xff0c;它是一款非关系型数据库。在生产环境中&#xff0c;Redis通过将数据存储在内存中以及支持多种数据结构&#xff0c;提供了快速的读写能力&#xff0c;并且可通过持久化功能…

龙晰系统运维相关笔记

一、硬盘分区、格式化及挂载&#xff08;可直接查看另一篇文章硬盘分区格式化&#xff0c;或参考以下命令&#xff09; #查看硬盘设备号fdisk -lfdisk /dev/vdb#以下为输入fdisk /dev/vdb命令后可以使用的命令行m #查看选项n #新建分区p 新建主分区1 新建1号分区2048 输入初始磁…

laravel如何通过DB获取一条数据的指定字段并转成数组

在 Laravel 中&#xff0c;如果你想要通过原生数据库查询构建器&#xff08;DB facade&#xff09;获取一条数据的指定字段&#xff0c;并将其转换为数组&#xff0c;你可以这样做&#xff1a; 首先&#xff0c;使用 select 方法来指定你想要获取的字段&#xff0c;然后使用 w…

L1-020 帅到没朋友分数 (20)

一、题目要求 当芸芸众生忙着在朋友圈中发照片的时候&#xff0c;总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。 输入格式&#xff1a; 输入第一行给出一个正整数N&#xff08;≤100&#xff09;&#xff0c;是已知朋友圈的个数&#xff1b;随后N行…

2023一个前端人的杂谈

酒香也怕巷子深 年底提车,回河北过年,一路总是旅游的牌子,后来去满城滑雪,随拍了几张照片,才更加感受河北的魅力。 感觉仅仅是这一抹黄昏,就让这一行物超所值了,原来那句宣传语所言非虚:这么近,那么美,周末到河北,然而我认为实际的好处,可能不止如此。 作为一个出…

记录一次hss不能防护主机的问题

场景&#xff1a;hss的控制台显示不在防护中&#xff0c;其他云主机并没有这个情况。 故障发生的时间是昨天下午15点半左右&#xff0c;运维同事做了重启网卡的操作。service network restart 排查分析&#xff1a; 于是仔细的查看日志&#xff0c;发现报错如下&#xff1a…