丢失的第一个正整数 查看运行结果
2015-06-18 16:40
225 查看
给出一个无序的正数数组,找出其中没有出现的最小正整数。
样例
如果给出 [1,2,0], return 3 如果给出 [3,4,-1,1], return 2
挑战
只允许时间复杂度O(n)的算法,并且只能使用常数级别的空间。
class Solution {
public:
/**
* @param A: a vector of integers
* @return: an integer
*/
int firstMissingPositive(vector<int> A) {
4000
int n=A.size();
for(int i=0;i<n;)
{
if(A[i]>0)
{
if(A[i]<n&&A[i]!=i+1&&A[i]!=A[A[i]-1])
{
int tempOne=A[i];
int tempTwo=A[A[i]-1];
A[i]=tempTwo;
A[tempOne-1]=tempOne;
}else
i++;
}else
i++;
}
for(int i=0;i<n;i++)
{
if(A[i]!=i+1)
return i+1;
}
return n+1;
}
};
样例
如果给出 [1,2,0], return 3 如果给出 [3,4,-1,1], return 2
挑战
只允许时间复杂度O(n)的算法,并且只能使用常数级别的空间。
class Solution {
public:
/**
* @param A: a vector of integers
* @return: an integer
*/
int firstMissingPositive(vector<int> A) {
4000
int n=A.size();
for(int i=0;i<n;)
{
if(A[i]>0)
{
if(A[i]<n&&A[i]!=i+1&&A[i]!=A[A[i]-1])
{
int tempOne=A[i];
int tempTwo=A[A[i]-1];
A[i]=tempTwo;
A[tempOne-1]=tempOne;
}else
i++;
}else
i++;
}
for(int i=0;i<n;i++)
{
if(A[i]!=i+1)
return i+1;
}
return n+1;
}
};
相关文章推荐
- 余弦相似度
- Strategy Pattern 策略模式(一)
- PB中的DataStore是个好东西
- iframe自适应高度
- 【抓包工具】wireshark
- 搭建nexus服务器后,执行mvn出错解决办法
- jQuery 开发之jQuery事件一
- Win10不激活出现卡顿怎么办?
- Reservoir Sampling - 蓄水池抽样
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- ls -l文件类型
- java中Math.round(),Math.ceil(),Math.floor()运算
- java ThreadLocal 用法
- 找女神要QQ号码
- 我们一起学习WCF 第二篇WCF承载多个接口
- 阅读《一个程序猿的生命周期》有感
- SeGue 多控制器跨界面传递数据原理
- Oracle Study之--Oracle 11gR2 RAC crs启动故障(CRS-4000)
- 宣布Office 2016 applications DLP 公共预览版
- Django异常 - ImportError: No module named django.core.management