Skip to content

Instantly share code, notes, and snippets.

@hocyadav
Created October 26, 2019 13:46
Show Gist options
  • Save hocyadav/e537da7e15ad5b385767de656ff1fb14 to your computer and use it in GitHub Desktop.
Save hocyadav/e537da7e15ad5b385767de656ff1fb14 to your computer and use it in GitHub Desktop.
First half element in array are descending order and remaining are in ascending order : find the index where ascending order start
public class Rajat {
static int fun(int[] ary, int l, int r) {
int mid = l + (r-l+1)/2;
if(ary[mid-1]>ary[mid] && ary[mid] < ary[mid+1]) {//found index
return mid;
}
if(ary[mid-1]>ary[mid] && ary[mid] > ary[mid+1]) {//go right
return fun(ary, mid, r);
}
if(ary[mid-1] < ary[mid] && ary[mid] < ary[mid+1]) {//go left
return fun(ary, l, mid);
}
return -1;
}
public static void main(String[] args) {
int[] ary1 = {3,2,1,4,5,6,7};
System.out.println("ary1 :"+fun(ary1,0,ary1.length-1));
int[] ary = {3,2,1,0,-1,4,5,6,7};
System.out.println("ary :"+fun(ary,0,ary.length-1));
int[] ary2 = {10,9,8,7,6,50};
System.out.println("ary2 :"+fun(ary2,0,ary2.length-1));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment