Bloomberg Interview Question

find min of array that decrease then increase, like [5,4,3,2,1,2,3,4,5]

Interview Answers

Anonymous

Jan 16, 2017

use binary search

4

Anonymous

Jan 30, 2017

public static int MinValue(int[] array, int indexBegining, int IndexEnd) { if (indexBegining > IndexEnd) return -1; else { int mid = (indexBegining+IndexEnd)/2; if (array[mid] < array[mid -1] && array[mid] < array[mid+1]) { return array[mid]; } else { if (array[mid] < array[mid -1] ) // only this condition is true == were at the decremented part of table { return MinValue(array, mid, IndexEnd);} else { return MinValue(array, indexBegining, mid); // we are increasing } } } }

Anonymous

Apr 30, 2017

#include int findMaximum(int arr[], int low, int high) { /* Base Case: Only one element is present in arr[low..high]*/ if (low == high) return arr[low]; if ((high == low + 1) && arr[low] arr[high]) return arr[high]; int mid = (low + high)/2; /*low + (high - low)/2;*/ if ( arr[mid] arr[mid - 1]) return findMaximum(arr, low, mid-1); else return findMaximum(arr, mid + 1, high); } /* Driver program to check above functions */ int main() { int arr[] = {5,4,3,4,5,6,7,8,9}; int n = sizeof(arr)/sizeof(arr[0]); printf("The minimum element is %d", findMaximum(arr, 0, n-1)); getchar(); return 0; }