面试题:一个数组先是非严格递增然后非严格递减,找数组中的最大值
程序员文章站
2024-03-22 14:25:58
...
找一个数组中的最大值,这个数组先是非严格递增,然后非严格递减。这是美团面试的一个原题,分享一下解法供大家参考。
public class MaxNum {
public static void main(String[] args) {
int[] arr = new int[]{0,1,1,4,4,6,6,10,11,11,11,10,8,8,4,3,2,1};
System.out.println(FindMax(arr,0,arr.length-1));
}
public static int FindMax(int[] arr,int begin,int end){
if(begin+1==end){
return Math.max(arr[begin],arr[end]);
}
int mid = (begin+end)/2;
while(arr[mid]==arr[mid+1]){
mid++;
}
if(arr[mid]>arr[mid+1]){
while(arr[mid]==arr[mid-1]){
mid--;
}
end = mid;
}else {
begin=mid;
}
return FindMax(arr,begin,end);
}
}