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)