百度面试题:求数组最大值
来源:算法面试题
寒冬来了,多分享一些面试题吧!
点评:此题实质上是二分查找的变形题目。
代码实现
下面是作者用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 < right) {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] < 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学习笔记
看完,赶紧点个“好看”鸭
点鸭点鸭
↓↓↓↓
百度面试题:求数组最大值相关推荐
- 用递归法求数组最大值
设a是有n个int类型数据元素的数组,试编写求a中最大值的递归函数 递归!!! 1.确定参数.数组是容器,无疑是第一个参数.我们在数组中不停地寻找最大数,不能避免两数比较,遍历数组确保将数组中每一个数 ...
- android 求数组最大值,面试算法知识梳理(7) - 数组第四部分
面试算法代码知识梳理系列 一.概要 本文介绍了有关数组的算法第四部分的Java代码实现,所有代码均可通过 在线编译器 直接运行,算法目录: 求数组当中的最长递增子序列(求数组当中的最长递减子序列) 区 ...
- python求数组最大值_Python算法与数据结构--求所有子数组的和的最大值
Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. ...
- JAVA求数组最大值最小值总和均值
定义一个int型的一维数组,包含10个元素,分别赋一些随机数(两位数字) 求出所有元素的最大值最小值总和均值 public class MaxMinSumMean {public static voi ...
- 利用函数(求数组最大值、判断平年闰年、翻转数组、判断是否为素数)
函数案例 1.利用函数求求两个数的最大值 //利用函数 求两个数的最大值function getMax(num1,num2){//if(num1 > num2){// return num1;/ ...
- java求数组的最小值_JAVA编程求数组最大值和最小值
错在最后两段代码是相同的,写了两个"max",就会得到最大值与最小值是一样的结果. 只需要把最后一个"max"改为"min"就可以了,改了之 ...
- c语言求数组最大值最小值泡沫法,C语言选择法排序
#include int main() { int i, j, p, n, q; int a[] = {, , , , }; //对无序数组进行排序 for(i=; i { p = i; for(j= ...
- C++递归求数组最大值、平均值、求和
一.学习要点 1.相同类型的对象的复制是通过拷贝构造器: 2.初始化成员列表的具体表达方式,第一个是冒号,剩下的都是逗号. 3.强制类型转变,(float); 二.程序代码: 1.有关拷贝构造器的: ...
- c语言分治法求数组最大值,使用分治法求最大子数组的下标。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include int max(int a[],int left,int right); int maxcross(int a[],int left,i ...
最新文章
- python之commands模块
- 火狐浏览器修改userAgent
- ZCMU 1048: 子串
- docker删除none镜像_Docker容器相关命令
- LongAccumulator和DoubleAccumulator类如何工作?
- Python3网络爬虫开发实战,使用IP代理爬取微信公众号文章
- mysql innodb架构_Mysql Innodb体系结构
- [Ext JS 4] 拖放[drag and drop]
- 九章算法--寻找数组波峰
- Java多线程编程实战指南(核心篇)读书笔记(二)
- 用计算机怎么扣税点,2019新个税计算器如何扣个税?
- 光模块协议之8436
- 互联网历史上50个最重要的时刻
- 最先进的实体对齐方法的实验研究综述 An Experimental Study of State-of-the-Art Entity Alignment Approaches
- 给tensor增加维度 或 减少维度
- MySQL优化器成本记录表
- 基于 Apache Kylin 的微博舆情实时分析(内含 Demo)
- C++基础-介绍·数据结构·排序·算法
- 【MySQL技术内幕】49-事务的实现之group commit
- 知识库目录 - 作者:echo