[Leetcode] First Missing Positive

news/2025/5/31 2:03:16

First Missing Positive

Given an unsorted integer array, find the first missing positive integer.

For example,
Given [1,2,0] return 3,
and [3,4,-1,1] return 2.

Your algorithm should run in O(n) time and uses constant space.

数组哈希法

复杂度

O(N) 时间 O(1) 空间

思路

这道题先得理解深刻,再做
对于一个数组,长度为n,我们在最后返回的答案肯定是[1,n+1]闭区间范围内,超出这个区间不可能是答案,跳过即可
我们要做的就是,两步走:
1.把数组中有可能是答案的数([1,n+1]闭区间内的数)放在正确的位置上:num放在下标为num-1的位置上,比如4放在下标为3的位置上,注意有可能是答案的数才放,此时不会数组越界。
2.最后在这些可能的位置上找答案,这些位置是0到n-1。
举几个例子:
[5,6,7],答案:1
[5],答案:1
[-5],答案:1
[0],答案:1
[1],答案:2
[2,2],答案:1
注意最后这个例子,对于第一个2,这个数在答案区间内,可是我们发现在他应该出现的位置上已经是他了,那么我们视当前这个位置的2不是答案,跳过这个。这个特例需要注意哟~

注意

注意[2,2]这种情况哟

代码

public class Solution {public int firstMissingPositive(int[] nums) {for (int i = 0; i < nums.length; ) {int n = nums[i];if (n >= 1 && n <= nums.length + 1 && nums[n - 1] != n) {//这个数在答案区间int tmp = nums[n - 1];nums[n - 1] = n;nums[i] = tmp;} else {    //不在答案区间跳过不管i++;}}for (int i = 1; i < 1 + nums.length; i++) {if (nums[i - 1] != i)return i;}return nums.length + 1;}
}
文章来源:https://blog.csdn.net/weixin_33924220/article/details/89375458
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-2431463.html

相关文章

Js 运行机制和Event Loop

一、为什么JavaScript是单线程&#xff1f; JavaScript语言的一大特点就是单线程&#xff0c;也就是说&#xff0c;同一个时间只能做一件事。那么&#xff0c;为什么JavaScript不能有多个线程呢&#xff1f;这样能提高效率啊。 JavaScript的单线程&#xff0c;与它的用途有关。…

Spring 4.2框架中注释驱动的事件监听器详解

Spring 4.2框架中注释驱动的事件监听器详解 事件交互已经成为很多应用程序不可或缺的一部分&#xff0c;Spring框架提供了一个完整的基础设施来处理瞬时事件。下面我们来看看Spring 4.2框架中基于注释驱动的事件监听器。 1、早期的方式 在早期&#xff0c;组件要从Spring事件…

JAVA变量的基本使用

public class Demo { public static void main(String[] args) { //创建一个变量 //格式 数据类型 变量名称 int num1; //向变量当中存入一个数据 //格式&#xff0c;变量名数据值 num1 10; //像变量当中存入一个…

华为OD机试题 - 最左侧冗余覆盖子串(JavaScript)| 机考必刷

更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:最左侧冗余覆盖子串题目输入输出示例一输入输出说明示例二输入输…

kafka 学习笔记(2)

2019独角兽企业重金招聘Python工程师标准>>> Storing Offsets Outside Kafka offset的外部保存 The consumer application need not use Kafkas built-in offset storage, it can store offsets in a store of its own choosing. The primary use case for this is …

前言:《c#科学计算》

转载于:https://blog.51cto.com/2847013/1067333

oracle删除表语句

删除表&#xff08;记录和结构&#xff09;的语名delete ———— truncate ———— drop DELETE (删除数据表里记录的语句) DELETE FROM表名 WHERE 条件; 注意&#xff1a;删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused. 如…

为什么Java中long后面要加L?float后面加F?

问&#xff1a; 整数的默认的数据类型是int&#xff0c;那为什么byte和short类型后面不用加东西&#xff1f;答&#xff1a; java整型默认为int&#xff0c;且java会自动向下转型&#xff0c;byte和short都可以由int自动向下转型&#xff0c;但是long类型的不能自动向上转型&am…

华为OD机试题 - 玩牌高手(JavaScript)| 机考必刷

更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:玩牌高手题目输入输出描述示例一输入输出说明Code解题思路版权说…

【Machine Learning in Action --5】逻辑回归(LogisticRegression)

1、概述 Logistic regression&#xff08;逻辑回归&#xff09;是当前业界比较常用的机器学习方法&#xff0c;用于估计某种事物的可能性。 在经典之作《数学之美》中也看到了它用于广告预测&#xff0c;也就是根据某广告被用 户点击的可能性&#xff0c;把最可能被用户点击的广…