LeetCode刷题 fIRST MISSING POSITIVE

news/2024/7/7 13:00:42

Given an unsorted integer array,find missing postive 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 users constant space.

分析如下:

首先,要理解题解:

如果输入是{1,2,3,5},输出是4.

如果输入是{1,2,3,4},输入是5.

如果输入是{1000},输入是1,不是1001.

所以题目是需要你在从1~+无穷的范围中,找到没有在输入数组出现过

的最小的正数。

然后,这道题基本上不太好想,需要借助buctet sort 的思路来考虑。

首先扫描一遍数组,如果某个元素在1-n之间,则把他放入原数组中的

位置,最后扫描到第一个满足A[i]!=i+1的数。更加详细的分析和图片解释可以

看这篇文章的解释。

//思路来自bucket sort 

//8ms

class Solution {

public :

void exchage (int &a,int &b){

int tmp=a;

a=b;

b=tmp;

}

int firstMissingPositive(int A[],int n){

int i=0;

while (i<0){

if (A[i]!=i+1&&A[i]>=1&&A[i]<=n&&A[A[i]-1]!=A[i])

{

exchage(A[i],A[A[i]-1]);

}

else {

++i;

}
}

for (int i=0;i<n;++i){

if (A[i]!=(i+1))

return i+1;

}

return n+1;

}

};

 

转载于:https://www.cnblogs.com/heruonan/p/8366523.html


http://www.niftyadmin.cn/n/2574511.html

相关文章

数据结构与算法--克鲁斯卡尔算法 最小生成树 Python详细实现克鲁斯卡尔算法 Python详细实现最小生成树

阅读目录基本概述克鲁斯卡尔算法图解克鲁斯卡尔算法分析Python代码实现补充知识点&#xff1a;如何获取int&#xff08;long&#xff09;和 float 的最值完整代码实现基本概述 先看一个应用场景&#xff1a; 克鲁斯卡尔算法介绍&#xff1a; 克鲁斯卡尔算法图解 还是以上面的…

应用 JD-Eclipse 插件实现 RFT 中 .class 文件的反向编译

概述 反编译是一个将目标代码转换成源代码的过程。而目标代码是一种用语言表示的代码 , 这种语言能通过实机或虚拟机直接执行。文本所要介绍的 JD-Eclipse 是一款反编译的开源软件&#xff0c;它是应用于 Eclipse 开发平台的插件&#xff0c;它可以帮助开发人员在调试程序的过程…

C语言作业小学生的算术题,C语言大型作业-教小学生算数.doc

..《C语言工程训练》课程设计题目&#xff1a; 教小学生算数学 生 学 号 &#xff1a;学 生 姓 名 &#xff1a;指 导 教 师 &#xff1a;需求分析通过此系统实现以下功能做个位数&#xff0c;十位数的加&#xff0c;减&#xff0c;乘和除&#xff0c;减法不能得负数&#xff0…

Linux常用功能脚本

设置定时任务crontab -e 1 0 * * * /bin/find /mnt/tomcat/logs/ -mtime 3 -type f -name "*.log" -exec /bin/rm -rf {} \; 每天凌晨一分定时清除Tomcat的日志脚本linux下Tomcat自动备份 1、页面文件在/home/edn/tomcat6/webapps目录下&#xff0c;备份文件存放在/h…

c语言中哪个字母不能在数字后面表示类型,C语言程序设计(40学时)-中国大学mooc-题库零氪...

第一周&#xff1a;程序设计与C语言1.1 计算机和编程语言随堂测验1、计算机本身最擅长的能力是&#xff1f;A、推理B、想像C、重复D、分析2、编程语言是和计算机交谈的语言3、计算机(CPU)可以直接运行人类编写的程序1.2 C语言随堂测验1、关于C语言&#xff0c;以下说法错误的有…

结合领域驱动设计的SOA分布式软件架构 (转)

http://www.cnblogs.com/leslies2/archive/2011/12/12/2272722.html#转载于:https://www.cnblogs.com/mynameltg/p/4254991.html

数据结构与算法--二进制详解 Python二进制算法详解 史上最详细的二进制讲解 彻底搞懂原码、反码、补码 Python的负数二进制表示形式

阅读目录原码、反码、补码机器数 和 真值原码、反码、补码的基础Python中负数的处理负数的补码如何转成十进制位运算符 和 移位运算符基本概述妙用二进制涉及的算法原码、反码、补码 机器数 和 真值 机器数&#xff1a; 一个数在计算机中的二进制表示形式, 叫做这个数的机器数…

红外线stm32 c语言程序,C语言程序设计之STM32,在这里轻松学习嵌入式编程

C语言是面向过程的&#xff0c;而C&#xff0b;&#xff0b;是面向对象的C和C的区别&#xff1a;C是一个结构化语言&#xff0c;它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程&#xff0c;对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制…