Find a missing number in a continuous number list. For example, 6 is missing in 2, 3, 4, 5, 7.
Sigiloso
#include #include #include int binary_search_util (int *array, int low, int high) { int mid; int num = array[0]; int first = low; int last = high - 1; mid = (first + last)/2; while (first 1)) { return (array[mid] - 1); } last = mid; } else if ((array[last] - array[mid]) != ((array[low] + last) - (array[low] + mid))) { if (last - mid == 1 && (array[last] - array[mid] > 1)) { return (array[mid] + 1); } first = mid; } else { return (-1); } mid = (first + last)/2; } return (-1); } int find_missing_num (int *array, int length) { return (binary_search_util(array, 0, length)); } int main() { int array[] = {4,6,7,8,9,10,11,12,13}; int length = sizeof(array)/sizeof(array[0]); int missing = find_missing_num(array, length); printf("%d\n", missing); return (0); }