Create a binary array bin of N+1 length (C uses 0 based indexing)
Traverse the binary array O(n)
- If A[i] is within the bounds of bin then mark bin entry at index A[i] as present or true.
- Traverse the binary array again
- Index of any bin entry that is not present or false is your missing integer
~
#include
#include
#include
int solution(int A[], int N) {
// write your code in C99 (gcc 6.2.0)
int i;
bool *bin = (bool *)calloc((N+1),sizeof(bool));
for (i = 0; i < N; i++)
{
if (A[i] > 0 && A[i] < N+1)
{
bin[A[i]] = true;
}
}
for (i = 1; i < N+1; i++)
{
if (bin[i] == false)
{
break;
}
}
return i;
}