Skip to content

Instantly share code, notes, and snippets.

@mechazod
Created November 18, 2019 00:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mechazod/5f6848a943603c191a45f9a7e30b63ab to your computer and use it in GitHub Desktop.
Save mechazod/5f6848a943603c191a45f9a7e30b63ab to your computer and use it in GitHub Desktop.
// 22/100 SCORE
void swap(int* a, int* b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int segregate(int arr[], int size)
{
int j = 0, i;
for (i = 0; i < size; i++) {
if (arr[i] <= 0) {
swap(&arr[i], &arr[j]);
j++; // increment count of non-positive integers
}
}
return j;
}
int findMissingPositive(int arr[], int size)
{
int i;
for (i = 0; i < size; i++) {
if (abs(arr[i]) - 1 < size && arr[abs(arr[i]) - 1] > 0)
arr[abs(arr[i]) - 1] = -arr[abs(arr[i]) - 1];
}
for (i = 0; i < size; i++)
if (arr[i] > 0)
return i + 1;
return size + 1;
}
int findMissing(int arr[], int size)
{
int shift = segregate(arr, size);
return findMissingPositive(arr + shift, size - shift);
}
int solution(int A[], int N) {
// Get Missing Integer
int arr_size = N / A[0];
int missing = findMissing(A, arr_size);
return abs(missing);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment