class Solution {
public:
int firstMissingPositive(int A[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
for (int i = 0; i < n; i++) {
while (A[i] > 0 && A[i] <= n) {
int j = A[i] - 1;
if (i == j || A[i] == A[j])
break;
A[i] = A[j];
A[j] = j + 1;
}
}
for (int i = 0; i < n; i++) {
if (A[i] != i + 1)
return i + 1;
}
return n + 1;
}
};
Small Case: 4ms
Large Case: 20ms
Time: O(n)
Space: O(1)