每日算法之三十二:First Missing Positive
来源:互联网 发布:网络前沿技术有哪些 编辑:程序博客网 时间:2024/05/21 03:59
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.
class Solution {public: int firstMissingPositive(int A[], int n) { // Note: The Solution object is instantiated only once and is reused by each test case. if(NULL==A || n<1) return 1; int pos=0; while(pos<n) { if(A[pos]>0 && A[pos] != pos+1 && A[pos]-1<n && A[pos]!=A[A[pos]-1]) { swap(A[pos],A[A[pos]-1]); } else ++pos; } for(int i=0;i<n;++i) { if(i+1 != A[i]) return i+1; } return n+1; } void swap(int &a,int &b) { int tmp = a; a = b; b= tmp; } };
思路:
虽然不能再另外开辟非常数级的额外空间,但是可以在输入数组上就地进行swap操作。
思路:交换数组元素,使得数组中第i位存放数值(i+1)。最后遍历数组,寻找第一个不符合此要求的元素,返回其下标。整个过程需要遍历两次数组,复杂度为O(n)。
下图以题目中给出的第二个例子为例,讲解操作过程。
0 0
- 每日算法之三十二:First Missing Positive
- LeetCode 之 First Missing Positive
- LeetCode之First Missing Positive
- leetcode之First Missing Positive
- LeetCode之First Missing Positive
- latched之First Missing Positive
- 【Leetcode】之First Missing Positive
- Leetcode之first missing positive
- LeetCode 之 First Missing Positive
- 算法——First Missing Positive
- 算法练习(15):First Missing Positive
- leetcode之路041 First Missing Positive
- leetcode之First Missing Positive 问题
- LeetCode: First Missing Positive
- LeetCode First Missing Positive
- LeetCode: First Missing Positive
- [Leetcode] First Missing Positive
- leetcode12: First Missing Positive
- poj 3592 Instantaneous Transference
- 易语言中findwindowEx的用法
- iOS本地存储的代码实现
- C++类和对象的模板的实验
- ui计算器
- 每日算法之三十二:First Missing Positive
- OnSize 改变控件的大小
- Java 目录的表达方式
- 数据结构实验之大数相乘
- C++类运算符重载实验
- dffwgrfrfrefnre
- notepad中文复制乱码的问题
- [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile
- codeforce 11B 思维题