First Missing Integer
Brute Force
Using Sorting
Using lookup table
Optimal Solution Cyclic Sort
Last updated
Last updated
int Solution::firstMissingPositive(vector<int> &A) {
sort(A.begin(), A.end());
int expected = 1;
for(int x: A)
if(x > expected)
return expected;
else if(x == expected)
expected++;
return expected;
}int Solution::firstMissingPositive(vector<int> &A) {
vector<bool> seen(A.size() + 1, false);
for(int x: A)
seen[x] = true;
for(int i = 1; i < seen.size(); i++)
if(!seen[i])
return i;
return -1;
}int Solution::firstMissingPositive(vector<int> &A) {
int n = A.size();
for(int i = 0; i < n; i++)
if(A[i] > 0 && A[i] <= n) {
int pos = A[i] - 1;
if(A[pos] != A[i]) {
swap(A[pos], A[i]);
i--;
}
}
for(int i = 0; i < n; i++)
if(A[i] != i + 1) return (i + 1);
return n + 1;
}