查找数组中任一峰值的下标

  • 如题所示:
  • 思路
  • 源代码如下:

如题所示:

峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。
数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞。
示例 1:
输入: nums = [1,2,3,1]
输出: 2
解释: 3 是峰值元素,你的函数应该返回其索引 2。
示例 2:
输入: nums = [1,2,1,3,5,6,4]
输出: 1 或 5
解释: 你的函数可以返回索引 1,其峰值元素为 2;
或者返回索引 5, 其峰值元素为 6。
说明:
你的解法应该是 O(logN) 时间复杂度的

思路

•如果中间元素比右边的元素小,意味着当前处于一个“升序”中,那么右边(不含当前元素)将会出现一个峰值
•如果中间元素比右边的元素大,意味着当前处于一个“降序”中,那么左边(包含当前元素)将会出现一个峰值
•如果中间元素等于右边的元素,那么无法减小区间(所以题目给出了nums[i]不等于nums[i+1])
使用上述判断一直减小区间,直到区间只有1个元素

查找数组中任一峰值的下标相关推荐

  1. Java二分法查找数组中某个数的下标

    package dataStructures;import java.util.Scanner; /* 用二分法在一个有序数列{1,2,3,4,5,6,7,8,9,10}中查找key值, 若找到key ...

  2. Java 查找数组中某个数字的下标

    实现功能: 例如: 在数组{15,13,27,11,55,45,23,28)中找出45的下标 结果为:5 代码如下: package come.base; public class xiabiao { ...

  3. 二分实现:查找数组中的峰值元素

    问题引入 给定一个数组arr,其中 arr[i] != arr[i+1],找到唯一峰值元素并返回其索引 首先,定位到题干中的关键字:峰值元素 峰值元素是指 其值大于左右相邻值 的元素,是数组的一个转折 ...

  4. JS快速查找数组中重复项以及下标

    let arr= [1,2,3,4,5,1,2]; let rep = []; arr.forEach((item,index)=>{if(arr.indexOf(item)!=index){ ...

  5. 快速查找数组中重复项下标

    快速查找数组中重复项下标 var ARR = [1,2,3,4,5,1,2];var rep = [];ARR.forEach((item,index)=>{if(ARR.indexOf(ite ...

  6. 【Java】 查找数组中指定元素之 顺序查找 与 二分查找

    今天博主分享两个查找数组中指定元素的算法:顺序查找与二分查找 小小目录 1.顺序查找 2. 二分查找 1.顺序查找 给定一个数组, 再给定一个元素, 找出该元素在数组中的位置. 代码如下: //顺序查 ...

  7. 数组中查找並返回数组_用Python查找数组中出现奇数次的那个数字

    有一个数组,其中的数都是以偶数次的形式出现,只有一个数出现的次数为奇数次,要求找出这个出现次数为奇数次的数. 集合+统计 解题思路 最简单能想到的,效率不高.利用集合的特性,通过 Python 的 s ...

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

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

  9. php 查找数组相同元素,查找数组中重复的元素

    本文收集整理关于查找数组中重复的元素的相关议题,使用内容导航快速到达. 内容导航: Q1:在c语言中输入数组两个数组,查找重复元素并输出怎么写啊 可以一次读入N个数据.可以考虑以回车结束读入的一组. ...

最新文章

  1. 华为手机升级回退_华为鸿蒙OS 2.0手机开发者Beta版支持Mate 30/P40系列OTA升级
  2. 最新动态,电信屏蔽Godaddy部分DNS服务
  3. 自定义控件:视差特效
  4. [转]获取xml节点值和属性值(兼容ie和firefox)
  5. Java编程讲义之Eclipse开发工具
  6. 最后一周 | 微生物组-扩增子16S分析第9期(报名直播课免费参加线下2020.8)
  7. 深度linux_深度:图文带你走进Linux系统结构
  8. Python基础(12)--模块
  9. 【英语学习】【WOTD】chockablock 释义/词源/示例
  10. 矩池云安装gcc4.9和g++4.9简单教程
  11. 四面轻松突围!我是如何斩获高级运维开发一职的?
  12. python入门教程傻瓜版_大数据学习资料集--2014-12-23
  13. 回望2019,觅见2020
  14. Kylin多维分析引擎(四):Kylin Cude构建流程详解
  15. ReactNative 导航栏Navigator的使用及参数navigator的传递
  16. c语言单片机编程 实例教程,51单片机的C语言编程基础及实例教程
  17. java 双机热备_MySQL双机热备
  18. 微信小程序“发给朋友”onShareAppMessage,“分享到朋友圈”onShareTimeline,“收藏”onAddToFavorites代码
  19. 网页素材大宝库:15套精美的用户头像图标素材
  20. mysql三国人物库_一文带你使用neo4j生成三国人物社交关系图

热门文章

  1. mysql的limit有什么缺陷_mysql中使用limit时,explain带来的问题分析
  2. 怎么打开北信源加密u盘_全国首个!北信源?安存推出区块链生态环境监管平台...
  3. android的提示页面,android 页面加载中,友情提示界面-Fun言
  4. tableau地图城市数据_优阅达“优分享” | Tableau 2020.4 “地图标记层” 的多种妙用...
  5. mysql数据库挂科_面试命中率 90% 的点 :MySQL 锁
  6. mysql插10万条数据_MySQL数据库插入100w条数据要花多久?
  7. sqlite字段是否存在_学习廖雪峰的JAVA教程---反射(访问字段)
  8. Web前端如何学?Web前端学习方法分享
  9. 为什么你学不好Web前端?这些原因你需了解
  10. matlab制作以太网数据接收上位机_Python制作串口通讯上位机