二分法求数组最大最小_百度面试题:求数组最大值

7c07bed0029238cff3e3b2ae21f388bd.png

来源:算法面试题

寒冬来了,多分享一些面试题吧!

d18ef05c37198cbedf9dfa0c374a438c.png

5bbdfae6a3383fc9c13c54cdd0a8c8c6.png

26d36ee4f7c55d7c8ed851d6ca068eed.png

e82e7b2d19ffbac86c1591d17035d4b1.png

9ea17cc6b759a5f0e14b29fd596f5cab.png

bc8a2fe5f9261c7c0d2607c2cc80abcb.png

68c17ef987e9933038288cdc9da7c8cc.png

b2cdabb87d3f7903409451fb857c7145.png

838a7b35224e586bc7edecd72c6a03a5.png

26b87950b15299022b75af4bd8bf0b83.png

6722ccb4859e0af507c69743e0efeef4.png

51433c281eb26b5061bb7f581fb5cf26.png

72f2bacad5138f86893abd9f37451332.png

810a79164b7873d28c768992e724e5d8.png

5f97816f9666d15958e6101ce1dab06f.png

ed59d20d8fb26648e6357cf76b6da6a9.png

d671fb573f08f518cfec4c1acaa8911d.png

3130c923ac92d7d34c14c659ba2576f1.png

e782f089e678c9f555aefefa2f64de90.png

fbe6b6a963dcaa44d46fcff3da0e71d5.png

37ca866123c259b545d250ebfdbae057.png

点评:此题实质上是二分查找的变形题目。

代码实现

下面是作者用JavaScript实现的代码,仅供参考!(建议大家自己动手实现一

遍)

 1//参数arr,先升序后降序的数组,不能为空 2function getMaxValue(arr) { 3    let len = arr.length; 4    //当只有一个数时,直接返回 5    if(len === 1) return arr[0]; 6    //当数组只有下降部分时,直接返回 7    if(arr[0] > arr[1]) return arr[0]; 8    //当数组只有上升部分时,直接返回 9    if(arr[len - 1] > arr[len - 2]) return arr[len - 1];1011    //接下来处理既有上升部分又有下降部分的数组(这样的数组至少有3个元素)12    let left = 0,13        right = arr.length - 1;14    while(left 15        let mid = Math.floor((left + right) / 2);1617        //判断arr[mid]是否为最大值18        if(mid !== 0 && arr[mid] > arr[mid - 1] && arr[mid] > arr[mid + 1])19            return arr[mid];2021        //当arr[mid]不是最大值时,判断arr[mid]处于数组上升部分还是下降部分22        if(mid === 0 || arr[mid] > arr[mid - 1]) {23            //处于上升部分24            left = mid + 1;25        } else if(arr[mid] 1]) {
26            //处于下降部分
27            right = mid - 1;
28        }
29    }
30    return arr[left];
31}

·END·

 近期热文:

  • Spring Cloud Stream 学习小清单

  • 我说分布式事务之消息最终一致性事务(一):原理及实现

  • 疑案追踪:Spring Boot内存泄露排查记

  • Spring Cloud Stream 使用延迟消息实现定时任务(RabbitMQ)

  • 了解Java中的内存泄漏

  • Git 常用命令清单,掌握这些,轻松驾驭版本管理

  • 优先级队列(头条面试题)

  • 来谈下高并发和分布式中的幂等处理

  • 你应该知道的7个写出更好的 Java 代码的技巧

  • 百亿数据量下,掌握这些Redis技巧你就能Hold全场

  • 深入聊一聊 Spring AOP 实现机制

  • 不可错过的CMS学习笔记

  • 可能是最全面的G1学习笔记

a7d442b45ae3486386597320d70e1fd9.png

看完,赶紧点个“好看”鸭

点鸭点鸭

↓↓↓↓

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值