41.缺失的第一个正数

LeetCode 第41题:缺失的第一个正数 通过这道题,我们学习了如何在不排序的情况下找到数组中缺失的第一个正整数。关键在于利用数组的索引和元素之间的关系,将每个正整数放到正确的位置上,从而在遍历数组时能迅速定位到缺失的正数。 阅读详情

1.题目

在这里插入图片描述

2.解法

class Solution {    
public int firstMissingPositive(int[] nums) {        
	int len = nums.length;        
	// 先提前确定是否有1        
	int count = 0;        
	for (int i = 0 ; i < len ; i++) {            
	// 先排除里面原本的1                     
		if (nums[i] == 1) {                
		count++;                
		break;            
	}}        
	if (count == 0)             
		return 1;        
	if (nums.length == 1)                 
		return 2;
	// 将负数、0还有大于n的数设置为1        
	for (int i = 0 ; i < len ; i++) {            
		if (nums[i] <= 0 || nums[i] > len) {                
		nums[i] = 1;}}                
	for (int i = 0 ; i < len ; i++) {            
		int a = Math.abs(nums[i]);            
		// 当等于n时,没办法存储,所以放入0            
		if (a == len) {                
		nums[0] = -Math.abs(nums[0]);            
		} else {                
		nums[a] = -Math.abs(nums[a]);}}
	// 先判断前面是否连续        
	for (int i = 1 ; i < len ; i++) {            
		if (nums[i] > 0)                 
		return i;        }
		if (nums[0] > 0) {            
		return len;}        
		return len+1;}
	}
	```
==时间复杂度为O(n),空间复杂度为O(1)==
## 3.思考
@1、寻找缺失的第一个正数,如果有n个数,如果都连续从1,2,3,4,5开始,那么最大为n+1,其余<n+1

@2:将负数,<0的数标为正数1,第一是标为正数,后面以>0好判断,如果标为负数,数组中既有正又有负,
如果nums[a], a为Math.abs(nums[i]),它存在我就标为负数,那么负数就会被标为正,标为正,就证明不存在,

如果全部转换为负数,将问题弄复杂了。之所以将负数和0还有大于n的数标为1,就是不想影响其他正数的判断,提前判断1存不存在好判断,但是其他数字不好判断。
@3:以索引做下标,下标存在,该值存在。应该先判断i=1的值是否连续,再判断n
自然语言处理NLP星空智能对话机器人系列:Gavin大咖 Transformer 101问答集 第一问 自然语言处理NLP星空智能对话机器人系列:Transformer 101问答 [让天下没有难学的Transformer] 你问我答系列之一 Gavin大咖第一问: Transformer中的可训练Queries、Keys和Values矩阵从哪儿来? 以上是智华解答,供同学们参考。 星空智能对话机器人系列博客 NLP星空智能对话机器人系列:第二次星空智能对话机器人Zoom线上演示安排 NLP星空智能对话机器人系列:StarSpace: Embed All The Things NLP星空智能对 阅读详情

相关推荐

ESP8266 + MQTT :如何实现 LED 灯的远程控制

MQTT 是轻量级的、灵活的物联网消息交换和数据传递协议,致力于为 IoT 开发人员实现灵活性与硬件/网络资源的平衡。 NodeMCU 是一个开源的物联网平台。它使用 Lua 语言编程。该平台基于eLua开源项目,底层使用ESP8266 sdk 0.9.5版本。 在此项目中我们将实现 NodeMCU(ESP8266) 与 EMQ X Cloud 运营和维护的免费公共 MQTT 服务器远程控制 LED 灯,并使用 Arduino IDE 来对 NodeMCU ESP8266 进行编程。 EMQ X Cloud

emqx_broker的博客 3357

「图解」缺失的第一个正数

点击蓝色“五分钟学算法”关注我哟加个“星标”,天天中午 12:15,一起学算法来源 | 五分钟学算法今天分享的题目来源于 LeetCode 第 41 号问题:缺失的第一个...

程序员吴师兄的博客 1589

[仿真实战]FDTD Solutions 8.0:从零搭建薄膜光谱分析模型

本文提供了一份基于FDTD Solutions 8.0的薄膜光谱分析模型从零搭建实战指南。通过详细步骤,手把手教你创建玻璃基底与硅薄膜的几何结构、设置仿真区域与边界条件、配置光源与监视器,并最终计算反射率与透射率光谱。内容涵盖参数扫描与优化,旨在帮助用户快速掌握FDTD仿真在纳米光子学与薄膜光学设计中的核心应用。

defi6farmer的博客 503

leetcode:41. 缺失的第一个正数

题目解析 1

OceanStar的博客 885

从立创商城到Cadence:手把手教你实现封装格式的精准迁移

本文详细介绍了如何从立创商城获取元器件封装并精准迁移至Cadence Allegro的全流程。通过实战案例MAX31865ATP+T芯片,逐步解析Altium Designer格式转换、Cadence环境配置、封装导入验证等关键步骤,提供常见问题解决方案和效率提升技巧,帮助硬件工程师实现封装格式的高效迁移。

weixin_42519985的博客 217

【NLG】(六)文本生成评价指标—— ROUGE原理及代码示例

前奏: 【NLG】(一)文本生成评价指标——BLEU原理及代码示例 【NLG】(二)文本生成评价指标—— METEOR原理及代码示例 【NLG】(三)文本生成评价指标—— ENTROPY原理及代码示例 【NLG】(四)文本生成评价指标—— diversity原理及代码示例 【NLG】(五)文本生成评价指标—— kl_divergence原理及代码示例 1.ROUGE原理 2.优缺点 3.如何算ROUGE ...

凝眸伏笔的博客 1万+

精选力扣500题 第54题 LeetCode 41. 缺失的第一个正数【c++/java详细题解】

目录1、题目2、思路3、c++代码3、java代码 1、题目 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n)O(n)O(n) 并且只使用常数级别额外空间的解决方案。 示例 1: 输入:nums = [1,2,0] 输出:3 示例 2: 输入:nums = [3,4,-1,1] 输出:2 示例 3: 输入:nums = [7,8,9,11,12] 输出:1 提示: 1 <= nums.length <= 5 * 105 -231

林深不见鹿 的博客 2836

FMCW毫米波雷达原理一

1、简介 毫米波雷达的优点是角分辨率高、频带宽因而有利于采用脉冲压缩技术、多普勒颇移大和系统的体积小。目前笔者接触到的有24G毫米波雷达和77G毫米波雷达。 24G毫米波雷达主要应用在交通领域的测距和车辆测速,在其他领域也有使用24G毫米波雷达。 77G毫米波雷达主要应用在无人驾驶,汽车周围的目标检测等领域。 在首次接触雷达时,一头雾水。搞不清一个chirp的时域图和频域图的关系、中频信号以及其他名词的基本概念。在TI培训官网上看到一些毫米波雷达原理的视频才豁然开朗。TI培训官网毫米波传感介绍 本文主要是通

擎天柱工坊 8150

缺失的第一个正数(LeetCode 41)

以题目中的示例二 [3, 4, -1, 1] 为例,恢复后的数组应当为 [1, -1, 3, 4],我们就可以知道缺失的数为 2。我们可以对数组进行一次遍历,对于遍历到的数 x=nums[i],如果 x∈[1,n],我们需要将 x 放在数组中的 x−1 的位置,因此交换 nums[i] 和 nums[x−1],这样 x 就出现在了正确的位置。由于我们只在意 [1,n] 中的数,因此我们可以先对数组进行遍历,把不在 [1,n] 范围内的数修改成任意一个大于 n 的数(例如 n+1)。

Doublelv 的博客专栏。 1859

【论文笔记】LIME: low-light image enhancement via illumination map estimation

【论文笔记】LIME: low-light image enhancement via illumination map estimation 一篇低光图像增强,引用超1000次的经典论文

weixin_45565519的博客 1794

7、布尔网络的基础定义

本文介绍了布尔网络的基础定义及其在系统生物学中的应用。布尔网络是一种描述复杂系统动态行为的数学模型,由布尔变量和布尔函数组成,能够模拟生物系统中基因调控、信号传导和细胞代谢等过程。文章详细阐述了布尔网络的基本结构、动力学特征(如状态转移图和吸引子),以及其在生物建模中的重要价值,并探讨了优化和简化技术(如Backward Boolean Equivalence)如何提升其计算效率。

yhn45678901的博客 268

LeetCode算法学习-缺失的第一个正数(解题思路过程)

给你一个未排序的整数数组nums,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为O(n)并且只使用常数级别额外空间的解决方案。

qq_40805720的博客 1436

第一章 DRM 子系统概述:1.1 DRM 的组成与定位

DRM 是 Linux 内核中管理 GPU 资源的统一框架,核心职责已超越显示管理。其由两条主线构成:KMS(负责显示模式与输出)和资源管理(管理显存、调度与同步),二者呈单向依赖关系。KMS 依赖资源管理提供帧缓冲内存,而后者可独立运行于无显示需求的 AI 加速卡。因此,DRM 实质是内核级 GPU 内存与任务管理机制,本书聚焦资源管理部分,以对象生命周期为主线展开。

图形/计算GPU的驱动与虚拟化技术分享园地 55

力扣41.缺失的第一个正数

力扣41.缺失的第一个正数这道题给定了一个数组,需要寻找数组中的没有出现的一个最小的正数。而这个最小的正数的范围一定是在[1,N+1]这个范围里面的,其中N是指数组的长度假设数组中的每个数字都大于N,那么最小正数就是1假设数组中的每个数字都小于1,那么最小正数就是1假设数组中存在数字在[1,N+1]这个范围,那么最小正数就在[1,N + 1]假设数组中的数组分别是[1, N],那么最小正数就是N+1分析了最小正数的范围之后,就很容易分析出暴力法。暴力法依次判断[1,N+1]

沉迷写代码的程序猿的博客 2071

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

力扣-41.缺失的第一个正数

小结:哈希表,缺失的第一个正数最大为。

weixin_46878941的博客 3948

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

leetcode41. 缺失的第一个正数,原地哈希表

leetcode41. 缺失的第一个正数,原地哈希表

热爱C++和golang的学生 1296

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LeetCode 41 缺失的第一个正数

LeetCode 41 缺失的第一个正数题目描述思路代码改进思路代码 题目描述 给定一个未排序的整数数组,找出其中没有出现的最小的正整数。 思路 刚开始看到这道题感觉很简单,直接排序,然后从前往后扫描跳过负数,然后开始扫描,找到第一个没有出现的正数即可。 运行速度很快,但是总感觉不是这么写的… 代码 class Solution { public: int firstMissingPosi...

weixin_37905795的博客 191

Leetcode 41 缺失的第一个正数 C++,Java,Python

Leetcode41 缺失的第一个正数 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/first-missing-positive 题目: 给定一个未排序的整数数组,找出其中没有出现的最小的正整数。 示例 1: 输入: [1,2,0] 输出: 3 示例 2: 输入: [3,4,-1,1] 输出: 2 示例 3: 输入: [7,8,9,11,...

Rp的博客 352

Leetcode—41. 缺失的第一个正数【困难】

运行结果 之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

Atticus的博客 755

LeetCode第41题_缺失的第一个正数

给你一个未排序的整数数组nums,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为O(n)并且只使用常数级别额外空间的解决方案。

qq_40263592的博客 1287

LeetCode41☞缺失的第一个正数

【代码】LeetCode41☞缺失的第一个正数。

fantasy_4的博客 325

leetcode41 缺失的第一个正数

问题描述 leetcode41 寻找数组中缺失的第一个正数。 第一个指的是按照数字顺序,在数组中没有出现的正整数 要求 时间复杂度O(n) 空间复杂度O(1) 解决思路 基本解法:这个超出了时间复杂度的要求 先找出数组中最小的正整数,如果最小正值为 1, 则找比 1 大的在数组中没出现过的那个数,返回。 否则,直接返回 1。 ...

weixin_30611509的博客 158

41. 缺失的第一个正数

缺失的第一个正数的范围为 [ 1, n + 1 ],数组中的元素可能小于等于 0 , 也可能大于 n , 所以要先将小于等于0 和 大于 n 的元素改为1,同时记录数组本身是否出现1。如果数组本身已经出现了1,那么改为1不会影响最终的答案,如果数组本身就没有出现1,答案就是1。将数组本身作为Hash数组,遍历每一个元素 j, 将数组中num对应位置的数 nums[ j - 1 ] 转为负数,即nums[ j - 1 ] = - nums[ j - 1 ], 表示 j 这个数存在。

m0_62811060的博客 394

LeetCode41-缺失的第一个正数

LeetCode41-缺失的第一个正数 题目 给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。 输入: [1,2,0] 输出: 3 输入: [3,4,-1,1] 输出: 2 输入: [7,8,9,11,12] 输出: 1 解法 class Solution { public int firstMissingPositive(int[] nums) { int n = nums.length; // 基本情况 int contains = 0;

viva_la__vida的博客 153

leetcode_ 41 缺失的第一个正数

本文介绍了寻找未排序数组中缺失的最小正整数的两种解法。暴力解法通过排序后遍历查找,时间复杂度为O(n log n)。更优的原地哈希法利用数组本身作为哈希表,通过置换或标记法实现O(n)时间复杂度和O(1)空间复杂度。置换法通过交换元素到正确位置,标记法将存在元素的位置标记为负数。两种方法最终都通过二次遍历找到第一个不符合条件的位置,确定缺失的最小正整数。

bdn_nbd的博客 395
上一篇: 49. 字母异位词分组
下一篇: 38.外观数列
念殊15
博客等级 码龄8年 17粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值