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

力扣-hot100 (缺失的第一个正数)

41. 缺失的第一个正数

困难

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。

请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

示例 1:

输入:nums = [1,2,0] 输出:3

解释:范围 [1,2] 中的数字都在数组中。


示例 2:

输入:nums = [3,4,-1,1] 输出:2

解释:1 在数组中,但 2 没有。
 

示例 3:

输入:nums = [7,8,9,11,12] 输出:1

解释:最小的正数 1 没有出现。

提示:

1 <= nums.length <= 105

-231 <= nums[i] <= 231 - 1

思路:直接使用Hash表来记录下每个数, 预处理后再去检查1 ~ n + 1 缺失的数.【时间复杂度O(n) 空间复杂度O(n)】 而题目要求空间复杂度O(1)

解决关键: 数组本身是有两个位置可以记录数据的数据结构,一个是索引下标,另一个就是值. 利用这一点来实现常数级别空间复杂度的解决

这里将每个遍历到的值都将数组的索引做一个标记 (为了不影响这个数本身的价值,将其标为负数, 用到该数时再取绝对值, 但如果这里原来数组的数本来就是负数呢? 这里是要找缺失的第一个正数,负数是没有价值的, 所以我们可以将初始就为负数的数替换为一个特定的数. 为了不影响结果, 这个特定的数是要保证是存在的, 所以我们可以将其替换为 1 ~ n+1 的任何数, 只要在预处理的时候检查他存在, 但题目要求的是需要第一个正数, 故如果选择后面的数会出现漏掉前面较小的数的检查. 所以最小数1是你的不二选择)。 用索引下标表示这个数已经存在, 处理完后只需要找到这个数组的第一个正数, 他的下标就是第一个没有出现的正数。而缺失的数肯定在1 ~ n+1 之间的。如果都为负数则缺失的就是 n+1

class Solution {public int firstMissingPositive(int[] nums) {int n = nums.length;// 检查负数的最小标记是否存在 1boolean std = false;for(int i = 0; i < n; i ++) if(nums[i] == 1) std = true;// 不存在直接返回第一个缺失的正数 1if(!std) return 1;// 预处理,为了不让初始值为负数的数干扰后序检查的结果. 将无意义的负数都标记为已经存在的 1for(int i = 0; i < n; i ++) if(nums[i] <= 0) nums[i] = 1;// 将存在的数全都标负, 数组下标是从0开始的, 所以处理时都进行 -1for(int i = 0; i < n; i ++){int t = Math.abs(nums[i]);// 缺失的数只在1 ~ n+1 之间, 超过范围的其它数不需要处理if(t <= n) nums[t - 1] = -Math.abs(nums[t - 1]);}// 找到第一个正数for(int i = 0; i < n; i ++){// 找到时进行 + 1 恢复if(nums[i] > 0) return i + 1;}return n + 1;}
}

相关文章:

力扣-hot100 (缺失的第一个正数)

41. 缺失的第一个正数 困难 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xff…...

Electrolink信息泄露(CVE-2025-28228)

免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。使用者应确保其行为符合相关法律法规,并取得目标系统的明确授权。 对于因不当使用本文信息而造成的任何直…...

Leetcode Hot 100 三数之和

思路 对数组先排序&#xff0c;然后使用双指针法进行&#xff0c;并且整个过程需要把握去重的逻辑 代码 class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:if not nums:return []nums.sort() #去重都需要排序res[]for i in range(len(nums)):if i…...

5月6日日记

一点心得是 看通知要仔细认真&#xff0c;自己想问的问题要先看看通知或者文件中说了没有&#xff0c;如果没说再去问相关负责人。 上课的教室一定要看好&#xff0c;看准了再去。别像今天一样先去了科技楼又去了工学馆。 线代开课了。感觉总体还行&#xff0c;并不是很难。…...

巧记英语四级单词 Unit7-中【晓艳老师版】

collapse v.倒塌&#xff0c;坍塌 都(col)来扑(lap)噻immune a.不受影响的&#xff0c;免疫的 我im 木讷mune&#xff0c;人应该木讷一点yard n.院子 鸭的&#xff0c;在哪养&#xff1b;backyard 后院backward a.往后的 ward表示方向 profile n.外形&#xff0c;轮廓 从前面看…...

Windows系统修改Docker Desktop(WSL2)内存分配

# Windows查看docker信息 docker info 新增wsl全局配置文件(.wslconfig文件)&#xff1a;windows路径栏输入&#xff1a;%UserProfile%&#xff0c;找到目录C:\Users\Administrator&#xff0c;默认是没有这个配置文件的&#xff0c;可以自己新增 # 设置在wsl2上运行 [wsl2] # …...

Oracle02-安装

零、文章目录 Oracle02-安装 1、Windows Server2022安装Oracle11g &#xff08;1&#xff09;下载 百度网盘地址&#xff1a; https://pan.baidu.com/s/15MBkMt1ldbSFm4L74h7Myg?pwd8888下载完成两个压缩包解压放在一起 &#xff08;2&#xff09;安装 双击 setup 文件安…...

Linux[Makefile]

Makefile基础结构 规则语法 target: prerequisitescommandtarget&#xff1a;生成的目标&#xff08;如可执行文件、.o文件&#xff09; prerequisites&#xff1a;依赖项&#xff08;源码、头文件等&#xff09; command&#xff1a;构建命令&#xff08;必须用Tab缩进&am…...

相同的数(简单)

深度优先搜索 如果两个二叉树都为空&#xff0c;则两个二叉树相同。如果两个二叉树中有且只有一个为空&#xff0c;则两个二叉树一定不相同。 如果两个二叉树都不为空&#xff0c;那么首先判断它们的根节点的值是否相同&#xff0c;若不相同则两个二叉树一定不同&#xff0c;…...

「Mac畅玩AIGC与多模态22」开发篇18 - 多段输出拼接与格式化展现工作流示例

一、概述 本篇以已有多字段输出为基础&#xff0c;介绍如何通过执行 LLM 节点对多个上游字段进行统一拼接与格式化处理。开发人员将学习如何从多个节点输出中提取数据字段&#xff0c;并组合为结构清晰、风格统一的最终输出&#xff0c;提升用户阅读体验。 二、环境准备 mac…...

餐饮部绩效考核管理制度与综合评估方法

在竞争激烈的餐饮行业中&#xff0c;标准化与数据驱动的管理手段正成为提升服务质量与运营效率的关键。绩效考核不仅关乎员工奖惩&#xff0c;更直接影响顾客体验、成本控制与营收水平。构建一套科学有效的绩效体系&#xff0c;是餐饮部精细化运营的起点。 本文围绕餐饮部绩效…...

conda虚拟环境相关操作

查看当前存在哪些虚拟环境 conda env list conda info --env创建虚拟环境conda create -n env_name pythonX.X删除虚拟环境conda remove -n env_name --all查看安装了哪些包conda list下载/删除环境中的某个包conda install package_nameconda uninstall package_name删除所有未…...

达梦DM数据库安装步骤

文章目录 1、下载并解压缩2、安装DM数据库2.1 运行安装程序2.2 选择语言与时区2.3 安装向导2.4 许可证协议2.5 Key文件2.6 选择组件2.7 安装位置2.8 安装前小结2.9 安装过程2.10 已完成2.11 初始化 3、配置实例3.1选择操作方式3.2创建数据库模版3.3指定数据库目录3.4数据库标识…...

vue3在使用@import “./index.scss“报错

Deprecation Warning: Sass import rules are deprecated and will be removed in Dart Sass 3.0.0. More info and automated migrator: https://sass-lang.com/d/import 2 │ import "./index.scss"; 在 Sass 3.0.0.之后 导入样式使用 “use” &#xff0c;不在使…...

对标研华ECU-461,搭载飞腾4核/8核国产处理器, 提供8网 8串B码对时 双显 无风扇的ARM通信管理平台

ƒ 飞腾 FT-2000/4 和 D2000/8 主控制器&#xff0c;主频 2.3~2.6GHz ƒ 8 个千兆网口 , 8 个全功能隔离串口 ƒ HDMIVGA 双显示接口 ƒ 3 个 USB2.0, 2 个 USB3.0 ƒ 支持 2 组 SATA 硬盘存储 ƒ 支持 CAN 通讯 ( 替换 4 路或 8 路 COM) ƒ 整机无风扇散热设计 …...

如何将C#程序打包成软件绿色包

文章目录 前言步骤如下&#xff1a;总结 前言 在实际工作中&#xff0c;很多时候会开发一些特别小的工具&#xff0c;当这些工具需要发给别人用时&#xff0c;不值当的打个安装包&#xff0c;最适合做一个绿色包&#xff0c;别人拿到后&#xff0c;直接双击exe就可以用。 步骤…...

实验三 数据查询

一、【实验教学 1、掌握单表查询。 2、掌握多表查询。 二、【实验教学的基本要求】 1、掌握SQL程序设计基本规范&#xff1b; 2、熟练运用SQL实现数据基本查询&#xff0c;包括单表查询、分组统计查询和连接查询&#xff1b; 3、理解和掌握SQL查询语句中各个子句的特点和…...

关于串口读写NAND闪存的用法

在嵌入式系统中&#xff0c;nand 命令通常用于操作和管理 NAND 闪存子系统&#xff0c;特别是在引导加载程序&#xff08;如 U-Boot&#xff09;中。NAND 闪存是一种非易失性存储设备&#xff0c;广泛用于嵌入式设备中&#xff0c;用于存储操作系统、应用程序、配置文件等数据。…...

C++:实现线程池

线程池&#xff08;Thread Pool&#xff09;是一种多线程处理方式&#xff0c;用于管理和复用多个线程&#xff0c;以提高程序的并发性能并避免频繁创建和销毁线程所带来的开销。 基本概念&#xff1a; 线程池维护着若干个已创建好的线程&#xff0c;当有任务需要执行时&…...

本地运行qwen3:30b-a3b速度测试

仍然使用的是ollama&#xff0c;运行的Q4_K_M量化版。 这个模型在相同硬件环境下对比我电脑上其他32b的模型速度&#xff08;小于3 tokens/s&#xff09;提升非常明显&#xff0c;并且可以设置是否打开思考模式。 注意&#xff1a; /no_think前有个空格 非思考模式&#xff1…...

keil+vscode+腾讯ai助手

嵌入式软件开发 这个是之前一直想写的开发方式&#xff0c;不过上份工作一直在忙&#xff0c;没有抽出时间花在上面&#xff0c;现在空下来好好写一写吧&#xff01;标题软件安装 关于VSCode以及Keil的安装可以在以下链接中点击浏览 VSCode安装 Keil5安装 CubeMx安装 插件下…...

通过TinyML为语音助手赋能,推动以用户为中心的创新和现实世界应用

英文标题&#xff1a;Empowering voice assistants with TinyML for user-centric innovations and real-world applications 中文标题&#xff1a;通过TinyML为语音助手赋能&#xff0c;推动以用户为中心的创新和现实世界应用 作者信息 Sireesha Chittepu1, Sheshikala Mart…...

学习Python网络爬虫的实例

30岁程序员学习Python的第二天之网络爬虫的练习实例 爬取软科2025年中国大学排名 思路&#xff1a; 1、百度查到到网页地址&#xff1a;https://www.shanghairanking.cn/rankings/bcur/2025 2、编写爬取代码&#xff0c;具体步骤分3步&#xff0c;第一步通过requests库爬取网…...

雨云游戏云MCSM面板服使用教程我的世界Forge服务端开服教程

雨云 - 新一代云服务提供商 雨云面板服目前支持一键开服的游戏有&#xff1a;Minecraft Java版、Minecraft 基岩版、泰拉瑞亚、饥荒&#xff0c;还提供纯Java/Linux环境&#xff08;Docker&#xff09;&#xff0c;方便开自己开其他游戏服。 其中Minecraft Java版支持一键开…...

关于loadstartcode使用

loadstartcode 命令用于从 TFTP 服务器下载一个名为 startcode 的文件。这个命令通常用于将启动代码&#xff08;如引导加载程序或内核启动映像&#xff09;从 TFTP 服务器加载到设备内存中。它是嵌入式设备和网络设备&#xff08;如路由器&#xff09;常见的命令&#xff0c;通…...

Linux死锁实验分析与总结

三、实验结果截图及分析 1. 实验代码 #include <pthread.h> #include <stdio.h> #include <unistd.h>pthread_mutex_t mutex1 PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t mutex2 PTHREAD_MUTEX_INITIALIZER;void* producer(void* arg) {while (1) {pth…...

【计网】ipconfig、ping、arp、tracert

目录 ipconfig ping arp tracert cmd ipconfig ipcofig -all IPv4 物理地址 ping 检测网络连通情况&#xff0c;分析网络速度 根据域名得到服务器IP 根据TTL判断对方所使用的操作系统以及数据包经过路由器数量 byte数据包大小 time响应时间 TTLDNS记录在DNS服务器上存在…...

当手机开始预判你的下一步:一场正在颠覆生活的AI静默革命

当手机开始预判你的下一步&#xff1a;一场正在颠覆生活的AI静默革命 深夜加班时&#xff0c;手机自动调暗屏幕亮度&#xff1b;出差途中&#xff0c;智能音箱提前预定好常去的酒店&#xff1b;打开购物APP&#xff0c;推荐清单里躺着昨天刚在聊天中提到的商品——这些场景背后…...

【SDRS】面向多模态情感分析的情感感知解纠缠表征转移

abstract 多模态情感分析(MSA)旨在利用多模态的互补信息对用户生成的视频进行情感理解。现有的方法主要集中在设计复杂的特征融合策略来整合单独提取的多模态表示,忽略了与情感无关的信息的干扰。在本文中,我们提出将单模表征分解为情感特定特征和情感独立特征,并将前者融…...

C++ 中的静态链接和动态链接详解

目录 一、什么是链接&#xff1f; 链接分为两类&#xff1a; 二、静态链接&#xff08;Static Linking&#xff09; 特点&#xff1a; 优点&#xff1a; 缺点&#xff1a; 使用方式&#xff1a; 三、动态链接&#xff08;Dynamic Linking&#xff09; 特点&#xff1a; 优…...

426、N叉树的层序遍历

输入检查&#xff1a; if not root:return [] 如果根节点为空&#xff0c;直接返回空列表 初始化&#xff1a; result [] queue collections.deque([root]) result用于存储最终结果queue初始化包含根节点&#xff0c;使用双端队列实现 主循环&#xff1a; while queue:leve…...

雅思阅读--重点短语/句式39个

文章目录 1. according to2. regardless of3. make/keep/leave + n. + adj.leave us stronger1. according to “according to(根据)”。 德国著名数学家 David Hilbert(大卫希尔伯特)说过: Mathematics is a game played according to certain simple rules with meanin…...

探索开源大模型体系:当今AI的引领者

目录 1. Hugging Face Transformers 2. OpenAI GPT 3. DeepSpeed 4. Megatron-LM 5. AllenNLP 总结 在当今人工智能的迅猛发展中&#xff0c;大模型&#xff08;Large Model&#xff09;已经成为了AI领域的核心。与传统的机器学习模型相比&#xff0c;大模型在自然语言处…...

n8n系列(1)初识n8n:工作流自动化平台概述

1. 引言 随着各类自动化工具的涌现,n8n作为一款开源的工作流自动化平台,凭借其灵活性、可扩展性和强大的集成能力,正在获得越来越多技术团队的青睐。 本文作为n8n系列的开篇,将带您全面了解这个强大的自动化平台,探索其起源、特性以及与其他工具的差异,帮助您判断n8n是否…...

n8n 与智能体构建:开发自动化 AI 作业的基础平台

n8n 是一款开源的自动化流程构建平台&#xff0c;通过其模块化节点系统&#xff0c;开发者可以快速实现跨平台的任务编排、数据集成与智能交互。当 n8n 与大型语言模型&#xff08;LLM&#xff09;结合时&#xff0c;就能构建出具备感知、推理、执行能力的 AI 智能体&#xff0…...

大模型主干

1.什么是语言模型骨架LLM-Backbone,在多模态模型中的作用&#xff1f; 语言模型骨架&#xff08;LLM Backbone&#xff09;是多模态模型中的核心组件之一。它利用预训练的语言模型&#xff08;如Flan-T5、ChatGLM、UL2等&#xff09;来处理各种模态的特征&#xff0c;进行语义…...

大模型在宫颈癌诊疗全流程预测与应用研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、大模型预测宫颈癌术前风险 2.1 术前数据收集与预处理 2.2 预测模型构建与算法选择 2.3 术前风险预测指标与案例分析 三、大模型辅助制定术中方案 3.1 术中风险动态监测与预测 3.2 基于预测的手术方案优化…...

Diffusion Transformer(DiT)

扩散模型的核心思想&#xff1a;Diffusion Models是一种受到非平衡热力学启发的生成模型&#xff0c;其核心思想是通过模拟扩散过程来逐步添加噪声到数据中&#xff0c;并随后学习反转这个过程以从噪声中构建出所需的数据样本。 DiT的架构&#xff1a;DiT架构基于Latent Diffu…...

多模态理论知识

说一下多模态的定义? 多模态是指使用多种不同类型的媒体和数据输入&#xff0c;例如文本、图像、音频、视频等&#xff0c;它们之间存在关联或者对应关系。 这些不同类型的媒体和数据输入可以在不同的层面上传达信息并表达意义。多模态数据的处理需要融合不同类型的信息&…...

Nginx 安全防护与HTTPS部署

目录 一、核心安全配置 1、隐藏版本号 2、限制危险请求方法 3、请求限制&#xff08;CC攻击防御&#xff09; &#xff08;1&#xff09;使用Nginx的limit_req模块限制请求速率 &#xff08;2&#xff09;压力测试验证 4、防盗链 &#xff08;1&#xff09;修改 Window…...

Python爬虫+代理IP+Header伪装:高效采集亚马逊数据

1. 引言 在当今大数据时代&#xff0c;电商平台&#xff08;如亚马逊&#xff09;的数据采集对于市场分析、竞品监控和价格追踪至关重要。然而&#xff0c;亚马逊具有严格的反爬虫机制&#xff0c;包括IP封禁、Header检测、验证码挑战等。 为了高效且稳定地采集亚马逊数据&am…...

效率提升利器:解锁图片处理新姿势

今天我给大家分享一款超实用的图片压缩软件&#xff0c;好用程度超出想象&#xff01;该软件身形 “轻盈”&#xff0c;仅 648KB&#xff0c;启动后能迅速上手。 01 软件介绍 这款软件就是PicSizer&#xff0c;具有以下特点&#xff1a; 支持windows系统 体积小&#xff0c;绿…...

【强化学习】什么是强化学习?2025

1. 强化学习简介 一句话总结&#xff1a;强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种机器学习范式&#xff0c;强调智能体&#xff08;agent&#xff09;通过与环境&#xff08;environment&#xff09;的交互&#xff0c;以试错&#xff08;trial‑an…...

富文本编辑器的第三方库ProseMirror

如果0-1的开发一个富文本编辑器&#xff0c;成本还是非常高的&#xff0c;里面很多坑要踩&#xff0c;市面上很多库可以帮助我们搭建一个富文本编辑器&#xff0c;ProseMirror就是其中最流行的库之一。 认识ProseMirror ProseMirror 提供了一套工具和概念&#xff0c;用于构建…...

理解IP四元组与网络五元组:网络流量的“身份证”

理解IP四元组与网络五元组&#xff1a;网络流量的“身份证” 在现代网络通信中&#xff0c;IP四元组和网络五元组是流量识别、连接追踪、安全策略等核心的基础概念。理解这些“元组”不仅能够帮助我们更好地设计网络架构、排查故障&#xff0c;还能为安全与运维策略的落地提供…...

ROS2:话题通信CPP语法速记

目录 发布方实现流程重点代码 订阅方实现流程重点代码 参考代码示例发布方代码订阅方代码 发布方实现流程 包含头文件&#xff08;rclcpp.hpp与[interfaces_pkg].hpp&#xff09;初始化ROS2客户端&#xff08;rclcpp::init&#xff09;自定义节点类(创建发布实例&#xff0c;伺…...

码蹄集——直线切平面、圆切平面

MT1068 直线切平面 思路&#xff1a; 则 #include<bits/stdc.h> using namespace std;int main( ) {int n;cin>>n;cout<<n*(n1)/21;return 0; } MT1069圆切平面 n个圆最多把平面分成几部分&#xff1f;输入圆的数量N&#xff0c;问最多把平面分成几块。比如…...

2025年游戏行业DDoS攻防指南:智能防御体系构建与实战策略

2025年&#xff0c;游戏行业在全球化扩张与技术创新浪潮中&#xff0c;正面临前所未有的DDoS攻击威胁。攻击规模从T级流量到AI驱动的精准渗透&#xff0c;攻击手段从传统网络层洪水到混合型应用层打击&#xff0c;防御体系已从“被动应对”转向“智能博弈”。本文将结合最新攻击…...

LightGBM算法原理及Python实现

一、概述 LightGBM 由微软公司开发&#xff0c;是基于梯度提升框架的高效机器学习算法&#xff0c;属于集成学习中提升树家族的一员。它以决策树为基学习器&#xff0c;通过迭代地训练一系列决策树&#xff0c;不断纠正前一棵树的预测误差&#xff0c;逐步提升模型的预测精度&a…...

Nvidia发布Parakeet V2,一款新的开源自动语音识别模型

Nvidia 发布 Parakeet V2&#xff0c;一款新的开源自动语音识别 AI&#xff0c;核心亮点&#xff1a;一秒钟转录一小时的音频&#xff1b;Open ASR 上的顶级模型&#xff0c;击败了 ElevenLabs 的 Scribe 和 OpenAI 的 Whisper&#xff1b;6.05% 的单词错误率&#xff1b;CC-BY…...