码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-07-09 23:54:29      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:返回   maximum   思路   turn   mount   class   nbsp   二分法   tar   

题目:在一个先升序后降序的数组中找到最大值,如果没找到就返回-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   思路   turn   mount   class   nbsp   二分法   tar   

原文地址:http://www.cnblogs.com/junliu37/p/7143544.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!