欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

面试题:一个数组先是非严格递增然后非严格递减,找数组中的最大值

程序员文章站 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);
    }
}