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;

}

};

LeetCode刷题 fIRST MISSING POSITIVE的更多相关文章

  1. 乘风破浪:LeetCode真题_041_First Missing Positive

    乘风破浪:LeetCode真题_041_First Missing Positive 一.前言 这次的题目之所以说是难,其实还是在于对于某些空间和时间的限制. 二.First Missing Posi ...

  2. C#LeetCode刷题-位运算

    位运算篇 # 题名 刷题 通过率 难度 78 子集   67.2% 中等 136 只出现一次的数字 C#LeetCode刷题之#136-只出现一次的数字(Single Number) 53.5% 简单 ...

  3. C#LeetCode刷题-数组

    数组篇 # 题名 刷题 通过率 难度 1 两数之和 C#LeetCode刷题之#1-两数之和(Two Sum) 43.1% 简单 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组 ...

  4. C#LeetCode刷题-数学

    数学篇 # 题名 刷题 通过率 难度 2 两数相加   29.0% 中等 7 反转整数 C#LeetCode刷题之#7-反转整数(Reverse Integer) 28.6% 简单 8 字符串转整数 ...

  5. C#LeetCode刷题之#136-只出现一次的数字(Single Number)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4046 访问. 给定一个非空整数数组,除了某个元素只出现一次以外, ...

  6. LeetCode刷题专栏第一篇--思维导图&时间安排

    昨天是元宵节,过完元宵节相当于这个年正式过完了.不知道大家有没有投入继续投入紧张的学习工作中.年前我想开一个Leetcode刷题专栏,于是发了一个投票想了解大家的需求征集意见.投票于2019年2月1日 ...

  7. leetcode 刷题进展

    最近没发什么博客了 凑个数 我的leetcode刷题进展 https://gitee.com/def/leetcode_practice 个人以为 刷题在透不在多  前200的吃透了 足以应付非算法岗 ...

  8. LeetCode刷题指南(字符串)

    作者:CYC2018 文章链接:https://github.com/CyC2018/CS-Notes/blob/master/docs/notes/Leetcode+%E9%A2%98%E8%A7% ...

  9. leetcode刷题记录--js

    leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

随机推荐

  1. python使用grpc调用rpc接口

    proto文件: syntax = "proto3"; package coupon; // //message UnsetUseC2URequest { // int64 bid ...

  2. C#中的装箱(inboxing)和拆箱(unboxing)(简单理解)

    装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作.  装箱:将一个值类型隐式地转换成一个object类型,或把这个值类型转换成一个被该值类型应用的接口类型,把一个值类型的值装箱,就是创建一个ob ...

  3. html5 javascript 表单练习案例

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  4. PyQT的安装和配置

    安装pythonQt 操作系统:Windows 7 64位 python版本:3.4 PyQt5使用PIP安装 测试是否安装成功 导入PyQt5 没报错说明安装成功 pythonQt Designer ...

  5. 8、Spring-Kafka Recving Messages

    Record Listeners The @KafkaListener annotation provides a mechanism for simple POJO listeners. The f ...

  6. Python Mysql 交互

    Mysql 安装Python模块   Linux: yum install MySQL-python Windos: http://files.cnblogs.com/files/wupeiqi/py ...

  7. wget下载阿里云RDS备份集

    [root@localhost tmp]# more wget.sh #!/bin/bash download_url=`python /tmp/geturl.py` echo $download_u ...

  8. Guitar Pro 添加装饰音

    在使用Guitar Pro进行乐谱弹唱或者自己作曲时,我们经常会碰到在乐谱上出现一些装饰音,那么大家肯定会有问题了,装饰音是什么?如何使用Guitar Pro来添加装饰音呢? 装饰音是用来装饰旋律的临 ...

  9. sql语句修改字段约束为不为空 并为其设置主键

    alter table Drc_Project_Review alter column ReviewID uniqueidentifier not nullalter table Drc_Projec ...

  10. 单元测试系列之二:Mock工具Jmockit实战

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6760272.html Mock工具Jm ...