junliu37

题目:在一个先升序后降序的数组中找到最大值,如果没找到就返回-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]);
    }

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-04-26
  • 2021-09-29
  • 2021-12-03
  • 2021-12-10
  • 2021-11-23
猜你喜欢
  • 2021-12-23
  • 2021-12-23
  • 2021-12-23
  • 2022-01-02
  • 2021-07-24
  • 2021-07-13
相关资源
相似解决方案