美文网首页
先递增后递减的数组中找最值

先递增后递减的数组中找最值

作者: analanxingde | 来源:发表于2018-04-02 10:12 被阅读99次

问题分析

最小值

先增后减的数组,最小值一定是首尾元素中较小的那个

最大值

(1)如果数组先增大再减小,峰值就是最大值。
(2)如果数组单调递增,最后一个元素就是最大值。
(3)如果数组单调递减,第一个元素就是最大值。
(4)如果数组全部都一样,任何一个元素都是答案,更极端地,如果数组只有一个元素,那么这唯一的元素就是答案。

最大值代码

int FindMax(int *A, int m)
{
    if(m == 0) return -1;            //如果数组大小为0,则返回错误
    int begin = 0;
    int end = m - 1;
    int MP =  (begin + end)/2;
    
    while(MP > 0 && MP < m -1)
    {
        if(A[MP] > A[MP+1] && A[MP] > A[MP-1]){  //如果符合条件就返回此值
                   return MP;        
          }else if (A[MP] < A[MP+1]){            //在递增段
                begin = MP+ 1;
                MP= begin + (end - begin)/2;
          }else{                                 //在递减段
                end = MP- 1;
                MP= begin + (end - begin)/2;
          }
    }
    
    if(MP == 0) return 0; //如果数组是完全递减的,则第一个值就是最大值
    if(MP == m-1) return m-1; //如果数组是完全递增的,则最后一个值为最大值
    return -1;
}

相关文章

  • 先递增后递减的数组中找最值

    问题分析 最小值 先增后减的数组,最小值一定是首尾元素中较小的那个 最大值 (1)如果数组先增大再减小,峰值就是最...

  • 求先递增后递减数组最大值的下标

    求先递增后递减数组最大值的下标 给定数组 a, 里面的元素先严格递增后严格递减, 求最大值元素的下标. 满足时间复...

  • JavaScript操作符

    【一元操作符】 1. 递增和递减。对任何类型的值都适用:先像Number()一样处理值,再进行递增或递减。 2. ...

  • 第三章 2020-11-05

    自动递增和递减 ++a/--a先执行运算,再操作值。a++/a--先操作值,再执行运算。 测试对象的等价性 == ...

  • Shell使用循环

    递增递减循环 循环输出数组内容

  • 第4题-调整序列使其先递增后递减,求最小增加和

    面试题目(贝壳笔试): 给定一个数列,调整数列中的数值,使数列变成一个严格的先递增,后递减的数列(严格递增递减,是...

  • 2022-04-05 数组先严格递增再严格递减

    数组先严格递增再严格递减 java版本:

  • 二分查找--双调查找

    双调查找:如果一个数组中的所有元素是先递增后递减的,则称这个数组为双调的。编写一个程序,给定一个含有N 个不同in...

  • JavaScript操作符

    1.递增与递减操作符 前置递增和递减操作时,变量的值都是在语句被求值之前改变的 后置递增和递减操作是在包含他们的语...

  • 剑指offer 二维数组中的查找

    题目: 思路: 因为二维数组是从左到右递增,从上到下递增;即从二维数组左下角开始,从下到上递减,从左到右递增;因此...

网友评论

      本文标题:先递增后递减的数组中找最值

      本文链接:https://www.haomeiwen.com/subject/iljthftx.html