《LeetCode热题100》---<5.③普通数组篇五道>
本篇博客讲解LeetCode热题100道普通数组篇中的五道题
第五道:缺失的第一个正数(困难)
第五道:缺失的第一个正数(困难)
方法一:将数组视为哈希表
class Solution {public int firstMissingPositive(int[] nums) {int n = nums.length;for (int i = 0; i < n; ++i) {if (nums[i] <= 0) {nums[i] = n + 1;}}for (int i = 0; i < n; ++i) {int num = Math.abs(nums[i]);if (num <= n) {nums[num - 1] = -Math.abs(nums[num - 1]);}}for (int i = 0; i < n; ++i) {if (nums[i] > 0) {return i + 1;}}return n + 1;}
}
1.将负数,0,替换为n+1变成无效数字,因为我们只关心[1,n]的正数。
2.标记已存在的正整数,对于每一个元素 `nums[i]`,我们用它的绝对值 `num` 来表示。如果num是一个有效的数字,也就是num<=n。那么将数组中索引num-1的元素下标记为负数。这一步结束后,数组中所有出现过的正整数对应的索引位置都会被标记为负数。
3.查找第一个未被标记的位置。查找第一个仍然为正数的元素。此时返回i+1。
4.如果没有找到返回n+1
复杂度分析
时间复杂度:O(N),其中 N 是数组的长度。
空间复杂度:O(1)。
方法二:置换(恢复)
class Solution {public int firstMissingPositive(int[] nums) {int n = nums.length;for (int i = 0; i < n; ++i) {while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) {int temp = nums[nums[i] - 1];nums[nums[i] - 1] = nums[i];nums[i] = temp;}}for (int i = 0; i < n; ++i) {if (nums[i] != i + 1) {return i + 1;}}return n + 1;}
}
除了打标记以外,我们还可以使用置换的方法,将给定的数组「恢复」成下面的形式:
- 遍历数组:对于每个元素,将其放置在正确的位置上,即把数字
nums[i]
放在索引nums[i] - 1
的位置上。通过不断交换,确保每个正整数k
出现在索引k-1
的位置上。- 检查数组:再遍历一次数组,找到第一个位置
i
使得nums[i] != i + 1
,即第一个缺失的正整数是i + 1
。- 返回结果:如果所有位置都满足
nums[i] == i + 1
,则返回n + 1
,即数组长度加一的值。
复杂度分析
时间复杂度:O(N),其中 N 是数组的长度。
空间复杂度:O(1)。
相关文章:
![](https://i-blog.csdnimg.cn/direct/f4c7d0e459bc4134b5f29c258146cc8f.png)
《LeetCode热题100》---<5.③普通数组篇五道>
本篇博客讲解LeetCode热题100道普通数组篇中的五道题 第五道:缺失的第一个正数(困难) 第五道:缺失的第一个正数(困难) 方法一:将数组视为哈希表 class Solution {public int firstMissingPosi…...
![](https://i-blog.csdnimg.cn/direct/f91a7d44c1d54214ad54c05116416189.png)
Cocos Creator文档学习记录
Cocos Creator文档学习记录 一、什么是Cocos Creator 官方文档链接:Hello World | Cocos Creator 百度百科:Cocos Creator_百度百科 Cocos Creator包括开发和调试、商业化 SDK 的集成、多平台发布、测试、上线这一整套工作流程,可多次的迭…...
![](https://i-blog.csdnimg.cn/direct/a94d702d077242e1bbf215fc3ddc9c54.png)
插入数据优化 ---大批量数据插入建议使用load
一.insert优化 1.批量插入 2.手动提交事务 3.主键顺序插入 二.大批量插入数据 如果一次性需要插入大批量数据,使用insert语句插入性能较低,此时可以使用MySQL数据库提供的load指令进行插入。操作如下 1.客户端连接服务端时,加入参数 --local-infine mysql --local-infine…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.6/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=N7T8)
【Linux】一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向?
欢迎来到 CILMY23 的博客 🏆本篇主题为:一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向? 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Py…...
![](https://i-blog.csdnimg.cn/direct/a63bbc83e7614ceb81e19933c9bbcd2d.png)
svn软件总成全内容
SVN软件总成 概述:本文为经验型文档 目录 D:\安装包\svn软件总成 的目录D:\安装包\svn软件总成\svn-base添加 的目录D:\安装包\svn软件总成\tools 的目录D:\安装包\svn软件总成\tools\sqlite-tools-win32-x86-3360000 的目录D:\安装包\svn软件总成\安装包-----bt lo…...
![](https://i-blog.csdnimg.cn/direct/0cd535678d4b41c78be515d03188ec33.png)
[激光原理与应用-118]:电源系统的接地详解:小信号的噪声干扰优化,从良好外壳接地开始
目录 一、电路的基本原理:电流回路 1、电流回路的基本概念 2、电流回路的特性 3、电流回路的类型 4、电流回路的应用 五、电流回路的注意事项 二、交流设备的接地 1.1 概述 1、交流工作接地的定义 2、交流工作接地的作用 3、交流工作接地的规范要求 4、…...
![](https://img-blog.csdnimg.cn/img_convert/17c9fdc07691c0590cca89098895573f.jpeg)
回测本身就是一种过度拟合?
这也许是一个絮絮叨叨的专题,跟大伙儿唠一唠量化相关的小问题,有感而发写到哪算哪,这是第一期,先唠个10块钱的~ 前段时间在某乎上看到这样一个问题『您怎么理解回测本身就是一种过度拟合?』 个人看来,回测本…...
![](https://i-blog.csdnimg.cn/direct/0a66e8f7e3cd4a8f9d8384466cda0a0b.png)
什么是Arduino?
Arduino是一款便捷灵活、方便上手的开源电子原型平台,由欧洲的一个开发团队于2005年冬季开发。以下是关于Arduino的详细介绍: 一、基本概述 定义:Arduino是一个基于开放源代码的软硬件平台,它让电子设计更加简单快捷。通过Arduin…...
![](https://i-blog.csdnimg.cn/direct/ee0d20c42172483cb085541c98f25204.png)
【机器学习基础】Scikit-learn主要用法
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…...
![](https://img-blog.csdnimg.cn/d994c83852ac4249a31905d46b3b070f.jpg)
python-素数回文数的个数(赛氪OJ)
[题目描述] 求 11 到 n 之间(包括 n),既是素数又是回文数的整数有多少个。输入: 一个大于 11 小于 10000 的整数 n。输出: 11 到 n 之间的素数回文数个数。样例输入1 23 样例输出1 1 提示: 回文数指左右对…...
![](https://www.ngui.cc/images/no-images.jpg)
OCC 网格化(二)-网格划分算法
目录 一、概述 二、详解 1. 线性偏转 (Linear Deflection) 2. 角偏转 (Angular Deflection) 三、示例 3.1 示例1 3.2 示例2 一、概述 在 Open CASCADE Technology (OCC) 中默认的网格划分算法BRepMesh_IncrementalMesh有两个主要的选项来定义三角剖分—线性和角偏转。 …...
![](https://www.ngui.cc/images/no-images.jpg)
pyecharts模块
PyEcharts 一个基于ECharts库的Python封装库,它使得开发者可以方便地在Python环境中创建交互式的图表,包括折线图、柱状图、饼图、地图等多种可视化效果。 优点: 易用性:PyEcharts提供了简单易懂的API,通过链式调用…...
![](https://i-blog.csdnimg.cn/direct/461c5af9f1b540d79b57a9d0bb230958.png)
深⼊理解指针(3)
1. 字符指针变量 2. 数组指针变量 3. ⼆维数组传参的本质 4. 函数指针变量 5. 函数指针数组 6. 转移表 1. 字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 ⼀般使⽤: char* 这两种方式都是把字符串中的首字符的地址赋值给pc。 在这串代码中 str1内容的地…...
![](https://i-blog.csdnimg.cn/direct/a1535e01f0964fd9b036c651bc4d0f8f.png)
黑马头条vue2.0项目实战(四)——首页—文章列表
目录 1. 头部导航栏 1.1 页面布局 1.2 样式调整中遇到的问题 2. 频道列表 2.1 页面布局 2.2 样式调整 2.3 展示频道列表 3. 文章列表 3.1 思路分析 3.2 使用 List 列表组件 3.3 加载文章列表数据 3.4 下拉刷新 3.5 设置上下padding固定头部和频道列表 3.6 记住列…...
![](https://i-blog.csdnimg.cn/direct/0d99b86798234ca094d02d20fd3e169b.png)
UE5.4内容示例(4)UI_UMG - 学习笔记
https://www.unrealengine.com/marketplace/zh-CN/product/content-examples 《内容示例》是学习UE5的基础示例,可以用此熟悉一遍UE5的功能 UI示例 UI_UMG :基本UMGUI_CommonUI :UMG多层应用UI_SlatePostBuffer UI :FX的示例&…...
![](https://i-blog.csdnimg.cn/direct/de59fcd01d0442cd827b4efd6d9bbf8d.png)
C#实现数据采集系统-配置文件化
系统优化-配置 配置信息ip端口,还有点位信息,什么的都是直接在代码里直接写死,添加点位,修改配置,比较麻烦,每次修改都需要重新生成打包。 所以将这些配置都改成配置文件,这样只需要修改配置文件,程序无须修改,即可更新。 配置代码: 如果我们有100个采集,一个个去…...
![](https://i-blog.csdnimg.cn/direct/9547efd7b6f345d4ad6e56d189290d9b.png)
Java面试题 -- 为什么重写equals就一定要重写hashcode方法
在回答这个问题之前我们先要了解equals与hascode方法的本质是做什么的 1. equals方法 public boolean equals(Object obj) {return (this obj);}我们可以看到equals在不重写的情况下是使用判断地址值是否相同 所以默认的 equals 的逻辑就是判断的双方是否引用了一个对象&am…...
![](https://i-blog.csdnimg.cn/direct/782cacca2160422187d1deb1fb99c80b.png)
J031_使用TCP协议支持与多个客户端同时通信
一、需求文档 使用TCP协议支持与多个客户端同时通信。 1.1 Client package com.itheima.tcp2;import java.io.DataOutputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner;public class Client {public static void main(String[] a…...
![](https://www.ngui.cc/images/no-images.jpg)
二分查找(精确查找、范围搜索)
目录 1. 二分查找概述2. 精确查找2.1 【left,right】2. 2 【left,right) 3. 范围查找总结 1. 二分查找概述 二分查找法,也称为二分搜索法或折半查找法,是一种在有序数组中查找特定元素的搜索算法。其基本思想是&#x…...
![](https://www.ngui.cc/images/no-images.jpg)
软件工程简记
文章目录 一、软件工程要点之软件设计二、UML(Unified Modeling Language,统一建模语言)(一)UML 的整体分类与部分功能(二)UML 各类图的具体内容三、开发模型(一)多种开发模型的特点与问题四、设计模式(一)设计模式的总体概念与原则(二)软件结构设计原则(三)常见…...
![](https://i-blog.csdnimg.cn/direct/c4f4acad4fb5493d92d1f6f8726a17ff.png)
【深度学习】【语音TTS】OpenVoice v2,测评,中英文语料,Docker镜像,对比GPT-SoVITS、FishAudio、BertVITS2
https://github.com/myshell-ai/OpenVoice/blob/main/docs/USAGE.md 实际体验OpenVoice v2的TTS效果。 文章目录 环境启动 jupyter代码代码分析主要模块和功能测试一些别的中文和中英文混合总结优点缺点对比GPT-SoVITS、FishAudio、BertVITS2使用我的Docker镜像快速体验OpenVo…...
![](https://i-blog.csdnimg.cn/direct/7da2630dd83442b58f76386b63fe128f.png)
Kotlin OpenCV 图像图像50 Haar 级联分类器模型
Kotlin OpenCV 图像图像50 Haar 级联分类器模型 1 OpenCV Haar 级联分类器模型2 Kotlin OpenCV Haar 测试代码 1 OpenCV Haar 级联分类器模型 Haar级联分类器是一种用于对象检测(如人脸检测)的机器学习算法。它由Paul Viola和Michael Jones在2001年提出…...
![](https://i-blog.csdnimg.cn/direct/19625053bb5347cba971a237f5b45b05.png)
嗖嗖移动业务大厅(Java版)
首先对此项目说明一下,我只完成了项目的基本需求,另外增加了一个用户反馈的功能,但是可能项目中间使用嗖嗖这个功能还有一些需要完善的地方,或者还有一些小bug,就当给大家参考一下了,希望谅解。代码我也上传…...
![](https://www.ngui.cc/images/no-images.jpg)
hcia复习笔记
一、OSI 七层模型 应用层:为应用程序提供服务,如文件传输、电子邮件等。 表示层:数据格式转换、加密解密、压缩解压缩。 会话层:建立、维护和管理会话。 传输层:提供端到端的可靠或不可靠的数据传输服务࿰…...
![](https://i-blog.csdnimg.cn/direct/497bbbc9efca4186a24ce0c6d38ffecb.png)
pycharm中安装、使用扩展工具,以QT Designer为例
pycharm中安装、使用扩展工具,以QT Designer为例 第一步,下载QT Designer安装包。找到QT Designer.exe所在位置,复制路径 第二步,打开Pycharm,选择Setting,找到扩展工具(External Tools…...
![](https://www.ngui.cc/images/no-images.jpg)
【Rust光年纪】Rust语言实用库汇总:从机器翻译到全文搜索引擎
优秀的Rust语言库探索:机器翻译、音频编解码和全文搜索引擎 前言 Rust语言在近年来迅速崛起,成为了一种备受欢迎的系统级编程语言。随着其生态系统的不断丰富,涌现出了许多优秀的库和工具。本文将重点介绍几个用于Rust语言的重要库…...
![](https://i-blog.csdnimg.cn/direct/ac447e7c283b45c6aa9135c5a8636043.png)
学习笔记 - 二极管的参数与选型
二极管 普通二极管: 1N4148(高频开关二极管) 整流二极管: 1N4007 1A 1000V1N5408 3A 1000V 肖特基二极管 (白线边为阴极) SS14 SS34 SS54 常见肖特基二极管参数 快恢复二极管 FR107 FR207 FR307 UF4007 可以用快恢复二…...
![](https://i-blog.csdnimg.cn/direct/9b4aa2278b27457ba2786d426bf8122e.png)
PMP--冲刺--易混概念
文章目录 十大知识领域一、整合管理项目管理计划与项目文件的区分: 二、范围管理三、进度管理赶工与快速跟进的区分:赶工增加资源,以最小的成本代价来压缩进度工期;快速跟进,将正常情况下按顺序进行的活动或阶段改为至…...
![](https://i-blog.csdnimg.cn/direct/6ff25c7099f4466ba170d7eb5f96489a.png)
Resolving Maven dependencies
Maven是一种项目管理和构建工具,通常用于Java项目。这个过程包括下载项目所需的所有外部库和插件,并将它们添加到项目的构建路径中。具体来说,它正在处理名为“AAS_byBasyx”的项目或模块的依赖项。这种任务通常在你打开一个新的Maven项目或更…...
![](https://i-blog.csdnimg.cn/direct/72c90ed8a46e427d974d9d03a697c425.png)
【Spring】SSM框架整合Spring和SpringMVC
目录 1.项目结构 2.项目的pom.xml文件 3.spring.xml和springMVC配置文件 4.database.properties和mybatis.xml配置文件 5. 代码编写 6.测试整合结果 1.项目结构 首先创建一个名为ssm_pro的Mavew项目,然后再在主目录和资源目录下,创建如下所示的结…...
![](/images/no-images.jpg)
武汉网站开发网站/免费搭建个人网站
文章来源:http://blog.csdn.net/jarvis_xian/article/details/6428358 这两天在板子上加载模块的时候,遇到了各种问题,与我第一次加载模块时碰到的问题大同小异,故记录在博客,仅供查阅。 1.PC机和目标板内核版本不一致…...
![](/images/no-images.jpg)
县区级政府网站建设现状/广州网站设计
1、windows聚焦图片目录路径: C:\Users\Er\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets 2、建立bat 文件 内容: ren *.* *.jpg 转载于:https://www.cnblogs.com/BlogOfEr/p/10048193.html...
![](https://img-blog.csdnimg.cn/img_convert/73e92f40ce0784fc16928c38f3da2cbe.png)
卖衣服的网站排名/网络营销的产品策略
你可以使用多种绘图程序创建 SVG 图像,包括开源的 Inkscape 和 Adobe Illustrator。让你的图像“能动起来”需要更多的努力。幸运的是,有一些开源解决方案甚至可以引起 Belshazzar 的注意。-- Jeff Macharyas(作者)开源 SVG&#…...
![](/images/no-images.jpg)
没有营业执照可以做网站吗/邵阳疫情最新消息
为什么不使用opacityCSS3 还允许通过opacity 声明来设置元素的透明度。该透明度的值也是一个介于0 到1 之间的小数(如将opacity 设置为0.1 表示为10%透明)。但是这种透明度与RGBA 及HSLA 有所不同,这种方式设置的透明度会对整个元素产生影响&…...
![](/images/no-images.jpg)
重庆营销型网站随做的好/网站seo站长工具
关于Arch Linux基本系统的安装,之前已经说过,这里给出链接:http://www.cnblogs.com/freerqy/p/8502838.html现在我们继续为Arch Linux安装桌面,我选择的是安装Xfce桌面,先给出有用的WiKi链接:接着开始正式安…...
![](/images/no-images.jpg)
企业网站建设的重要性及意义/公关公司排名
目录 1、二进制和八进制表示法 2、Number.isFinite()、 Number.isNaN() 3、Number.parseInt() Number.parseFloat() 4、Number.isInteger() 5、Math对象的扩展 1、Math.trunc() 2、Math.sign() 3、Math.cbrt() 6、指数运算符 1、二进制和八进制表示法 ES6 提供了二进…...