博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode题解-----First Missing Positive
阅读量:4935 次
发布时间:2019-06-11

本文共 1122 字,大约阅读时间需要 3 分钟。

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.

分析:

因为数组的大小为n,因此那个缺失的整数只可能的范围[1,n+1]

 

方法一:需要O(n)的空间,设置一个数组vis用来标记该下标对应的数字是否出现过。

int firstMissingPositive(int* nums, int numsSize) {    int vis[10000];    int i;        for(i=1;i<=numsSize;i++){        vis[i]=0;    }        for(i=0;i
0&&nums[i]<=numsSize){ vis[nums[i]]=1; } } for(i=1;i<=numsSize;i++){ if(vis[i]==0){ return i; } } return numsSize+1;}

 

 方法二:将数组中值在1~n的数组元素放到对应下标为该值减1的地方。例如: A[3]=2,则将A[2-1]与A[3]进行交换。最后遍历数组直到元素值不等于下标值加一,则该下标加一  就是第一个缺失的正整数

int firstMissingPositive(int* nums, int numsSize) {    int i,t;        for(i=0;i
0&&nums[i]<=numsSize){ //保证每个元素回到适当的位置 if(nums[nums[i]-1]==nums[i]){ break; } t=nums[nums[i]-1]; nums[nums[i]-1]=nums[i]; nums[i]=t; } } for(i=0;i

  

  

  

转载于:https://www.cnblogs.com/YaoDD/p/5199432.html

你可能感兴趣的文章
nmea协议
查看>>
js 中对象的特性
查看>>
hdoj3714【三分】
查看>>
嵌入式开发入门(4)—驱动入门之时序图分析【20121211修改,未完】
查看>>
Python 使用字符串
查看>>
Quartz Core之CALayer
查看>>
java:一个项目的开发过程(转)
查看>>
express框架学习笔记
查看>>
记录一个css的综合运用
查看>>
在Ubuntu中安装PHP,MySQL,Nginx和phpMyAdmin
查看>>
类模板相互引用的问题(错误:缺少类型说明符-假定为int。注意:C++不支持默认int)...
查看>>
操作系统下载路径
查看>>
网站开发 关于图片压缩 以及图片使用
查看>>
把查询出来的结果进行修改再赋值给list
查看>>
POSIX条件变量pthread_cond
查看>>
开博了
查看>>
C# Dictionary 字典用法 记录
查看>>
php中iconv函数使用问题
查看>>
hive的count(distinct id)测试--慎用
查看>>
第九周周总结
查看>>