新手算法学习之路----二分法Maximum-in-Mountain-Sequence

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了新手算法学习之路----二分法Maximum-in-Mountain-Sequence相关的知识,希望对你有一定的参考价值。

题目:在一个先升序后降序的数组中找到最大值,如果没找到就返回-1;

         [ 1,4,6,8,6,4,3,2] return 8;

         [10,9,8,7,6,5]   return 10

思路:由于没有像其他数列一样给出一个特定值,这个时候需要一个可以用找到中间值M1 和M1+1进行判断,如果[M1] >[M1+1],就可以判断此时M1和M1+1在降序上;如果[M1]<[M1+1]说明M1 和 M1+1在升序上。

代码:

int SearchMaximum(int []arry){
        int start = 0, end = arry.length-1,mid;
        if(arry.length==0||arry==null) return -1;
        while(start+1<end){
            mid=start+(end-start)/2;
            if(arry[mid]>=arry[mid+1]){
                end = mid;
            }else {
                start =mid;
            }
        }
        return Math.max(arry[end], arry[start]);
    }

 

以上是关于新手算法学习之路----二分法Maximum-in-Mountain-Sequence的主要内容,如果未能解决你的问题,请参考以下文章

新手算法学习之路----二分法Maximum-in-Mountain-Sequence

新手算法学习之路----二分法Search-for-a-Range

新手算法学习之路----二分法Find Minimum in Rotated Sorted Array

新手算法学习之路----宽度优先算法

新手算法学习之路----二叉树(二叉树最大路径和)

新手算法学习之路----二叉树(二叉树的路径和)