首先。假设数组为nums[] = {1, 4 3, 6, 8,10}。很明显可以看出 6、8大于左边所有数缺小于右边所有数。那如果用代码表示思路是怎么样子的?

我们可以开一个leftmax数组和一个rightmin数组。分别用来存放左边的最大值和右边的最小值

    nums[] = {1,4,3,6,8,10}leftmax[] = {1,4,4,6,8,10} // leftmax[0] = nums[0]  leftmax[i] = max(leftmax[i-1], nums[i])  i++ 从左往右
rightmin[] = {1,3,3,6,8,10} // rightmin[5]= nums[5] rightmin[i] = min(rightmin[i+1], nums[i]) i-- 从右往左// 然后开始遍历arr数组 nums[i] > leftmax[i-1] 同时 nums[i] < rightmin[i + 1] ==> nums[i] 满足要求
// 表示arr[i]大于他左边的最大值同时小于右边的最小值 即可证明在做左边最大,在右边最小


4比左边最大值1大,比右边最小值3大。不符合比右边小的条件
3比左边最大值4小,不符合比左边大的条件
6比左边最大值4大,比右边最小值8小,满足条件
8比左边最大值6大,比右边最小值10小,满足条件

用代码表示如下

     // 左边最大值int[] leftmax= new int[nums.length];leftmax[0] = nums[0]; // 赋值第一个元素for(int i = 1; i < nums.length - 1; i++) {leftmax[i] = Math.max(nums[i], leftmax[i - 1]);}// 右边最小值int[] rightmin= new int[nums.length];rightmin[nums.length - 1] = nums[nums.length - 1]; // 赋值最后一个元素for(int i = nums.length - 2; i > 0; i--) {rightmin[i] = Math.min(rightmin[i + 1], nums[i]);}// 遍历原数组for(int i = 1; i < nums.length - 1; i++) {if(nums[i] > leftmax[i - 1] && nums[i] < rightmin[i + 1]) {return nums[i];}}

找出数组中的一个数,在该数的左边他是最大的,在该数的右边他是最小的。如何求这个数相关推荐

  1. java数组出现次数最多的数_找出数组中出现次数最多的那个数——主元素问题...

    方法一:以空间换时间,可以定义一个计数数组int count[101],用来对数组中数字出现的次数进行计数(只能针对数组中数字的范围1~100),count数组中最大的元素对应的下标,即为出现次数最多 ...

  2. 找出重复的数java_剑指offer:1.找出数组中重复的数(java版)

    数组中重复的数: 题目:找出数组中重复的数, 题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的. 也不知道每个数字重复几次.请找 ...

  3. 找出数组中出现次数超过一半的数

    算法--找出数组中出现次数超过一半的数      每当我看到经典的算法题,就怀念高中,感觉很多算法题就是高中的题目,谁叫哥只读了个专科,高数基本相当没学.      有空要看看高数啊,想当年数学那是相 ...

  4. 找出数组中任一重复的数字

    找出数组中任一重复的数字 找出数组中任一重复的数字   在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重 ...

  5. 微策略2011校园招聘笔试题(找出数组中两个只出现一次的数字)

    1.8*8的棋盘上面放着64个不同价值的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0),一个人初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应棋盘上的礼物,结束位置在棋盘的右下 ...

  6. 给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高效的算法,找出数组中未出现的最小正整数。

    笔者初涉<算法设计与分析>这门专业课,在做一些算法设计题的过程中遇到一些小感悟,特此记录和大家分享. 下面直接给出算法题目: 给定一个含n(n≥1)个整数的数组,请设计一个在时间上尽可能高 ...

  7. c语言实现在数组中找一个数字显示,C语言找出数组中的特定元素的算法解析

    问题描述:一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它.能否只用一个额外数组和少量其它空间实现. 思路:如果能用两个辅助数组,那么相对 ...

  8. c语言找出一个数组中出现次数最多的那个元素,c语言找出数组中出现次数最多地那个元素...

    matlab中如何找出不同维度矩阵出现次数最多的数组并记录其个数 首先是胞矩阵中的序列问题,不妨假设AA{1}是一个多行两列的数据,AA{2}同例.程序如下clcclearallAA{1}=[12;2 ...

  9. 找出数组中只出现了一次的数字(Java)

    找出数组中只出现了一次的数字 题目 题目分析 方法1 方法2 方法3 代码实现 主方法 方法1 第一种:使用计数器的 第二种:不使用计数器 方法2 方法3 总结 题目 给定一个非空整数数组,除了某个元 ...

  10. 找出数组中重复的数字

    给定一个长度为 nn 的整数数组 nums,数组中所有的数字都在 0∼n−10∼n−1 的范围内. 数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. 请找出数组中任意一个 ...

最新文章

  1. 基于关联规则(Variational Autoencoders)疾病预测系统实战:(pyspark FPGrowth实现频繁项集挖掘、最后给出预测模型topK准确率和召回率)
  2. DotNetSpeech.dll的使用
  3. Kubernetes初体验
  4. android 弹出菜单 toast,Android学习第二天:Toast(提醒)、Menu(菜单)、Intent的显式和隐式(包括打开、适配网站,调用拨号界面等)...
  5. fatal error C1083: 无法打开预编译头文件:“Debug\a.pch”:No such file or directory
  6. 【转】30分钟学会UML类图
  7. SQL:清空数据库所有数据
  8. 设置Panel的布局管理器为BorderLayout,分别向其中的每个区域加入一个按钮
  9. 【笔记】UML核心元素
  10. 联想计算机设置恢复出厂,联想电脑一键恢复出厂设置使用方法
  11. zblog php 调用缩略图,zblog调用文章缩略图的方法
  12. 876. 链表的中间结点【我亦无他唯手熟尔】
  13. 写一个获取非行间样式的函数
  14. 微信对接会员管理系统搭建体系
  15. 程序员、架构师、技术经理、技术总监和CTO有啥区别?
  16. C# GDI+ 画心形 跳动动画
  17. 手写数字识别问题(5)——完结
  18. 这些论文绘图软件,你一个都不会用
  19. “宏观经济学”练习题1
  20. 关于谷歌浏览器无法正常上传图片的问题

热门文章

  1. 【PyCharm】Couldn‘t refresh skeletons for remote interpreter: Can‘t get remote credentials for server
  2. MOOC网深度学习应用开发4——猫狗大战
  3. java中获取系统时间_JAVA中获取当前系统时间
  4. DataScienceML:金融科技领域之风控的简介、类别、应用流程(定义目标变量→特征构建思路等)、案例集锦之详细攻略
  5. 山东艺术学院考的计算机是什么等级,山东艺术学院考研难吗?一般要什么水平才可以进入?...
  6. 【笔记篇】10仓管系统出库管理——之《实战供应链》
  7. 百度大脑OCR技术加持白描App:让AI成为视障者的眼睛
  8. 23级应届硕士招聘-给北京户口
  9. php按关键字查询mysql_php单条件查询,关键字查询
  10. 小学计算机课重要,浅谈信息技术课在小学教育教学中的重要性