寻找峰值
 
 

峰值元素是指其值大于左右相邻值的元素。

给定一个输入数组 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) 时间复杂度的。

二分查找

class Solution {
public int findPeakElement(int[] nums) {
if(nums.length==0)return 0;
int l=0,r=nums.length-1;
//中间元素比mid+1大,那么峰值在Mid的左边,同时中间元素可以取到峰值。如果比mid+1更小,那么峰值一定在Mid右边且取不到mid。
while(l<=r){
if(l==r)return l; //左右相遇作为结束条件
int mid=(l+r)/2;
if(nums[mid]>=nums[mid+1])r=mid; //取mid+1可以避免检测
else l=mid+1;
}
return -1;
}
}
寻找峰值
 
 

峰值元素是指其值大于左右相邻值的元素。

给定一个输入数组 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) 时间复杂度的。

最新文章

  1. HTTP 错误 500.21 - Internal Server Error 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
  2. [开源]用MQL4实现MD5加密
  3. jdk环境配置
  4. HTML流动布局各种宽度自适应
  5. ubifs核心功能 -- 垃圾回收
  6. 树的prufer编码
  7. Codeforces Round #259 (Div. 2) C - Little Pony and Expected Maximum (数学期望)
  8. Who needs an architect?---Martin Fowler
  9. 开源的Android开发框架-------PowerFramework使用心得(三)内置浏览器BrowserActivity
  10. mybatis dao无实现类的配置
  11. 百度地图 api 功能封装类 (ZMap.js) 本地搜索,范围查找实例
  12. CoreJavaE10V1P3.1 第3章 Java的基本编程结构-3.1 Java 最简程序
  13. GridView 翻页 索引超出范围
  14. objective-c中类似ruby枚举类的实例方法
  15. MySQL 字符集和校对
  16. 旧调重弹Hibernate与Ibatis区别——深入架构设计
  17. homestead安装
  18. hibernate 的sum(filed)引发的NullPointException错误解决过程
  19. [LeetCode&amp;Python] Problem 788. Rotated Digits
  20. win10 解决 WMI Provider Host 占用CPU过高问题

热门文章

  1. HDU 1290 献给杭电五十周年校庆的礼物(面分割空间 求得到的最大空间数目)
  2. 使用nuget 打包并上传 nuget.org
  3. ASP.NET教程
  4. iOS之动态计算文字的高度
  5. git获取步骤
  6. 04.nginx使用
  7. 关于vue中mockjs的使用
  8. 关于Vue的组件的通用性问题
  9. EOJ Monthly 2019.3 A
  10. 008---vim编辑器