TC : O(logn)
class Main { public static void main(String[] args) { int arr[] = {1,3,6,8,5,4,2}; int target = 2; //find index of 5 in the array int peakIndex = findPeak(arr,0,arr.length-1); int index = findIndex(arr, target, 0,peakIndex, true); if(index!=-1) System.out.println(index); System.out.println(findIndex(arr,target, peakIndex+1, arr.length-1, false)); } public static int findIndex(int arr[], int target,int l, int h, boolean increasing){ while(l<=h){ int mid = (l+ h) /2; if(arr[mid] == target )return mid; if(increasing){ if(arr[mid]<target) l= mid+1; else h = mid-1; } else{ if(arr[mid] > target) l = mid+1; else h = mid-1; } } return -1; } public static int findPeak(int arr[], int l, int h){ while(l<h){ int mid = (l + h) /2; if(arr[mid] < arr[mid+1]) l = mid + 1; else h = mid; } return l; } }
Top comments (0)