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

给定一个输入数组 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) {

return search(nums, 0, nums.length - 1);

}

public int search(int[] nums, int low, int high) {

if (low == high)   //最后low与high相等,所指的位置就是 一个山峰

return low;

int mid = (low + high) / 2;

if (nums[mid] > nums[mid + 1])

return search(nums, low, mid);

return search(nums, mid + 1, high);

}

}

Leetcode--162. 寻找峰值相关推荐

  1. java 寻找峰值峰谷_Java实现 LeetCode 162 寻找峰值

    162. 寻找峰值 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数组可能包含多个峰值,在这种情况下,返 ...

  2. LeetCode 162. 寻找峰值(二分查找)

    1. 题目 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数组可能包含多个峰值,在这种情况下,返回任何一 ...

  3. LeetCode 162. 寻找峰值

    为什么二分查找大的那一半一定会有峰值呢?(即nums[mid]<nums[mid+1]时,mid+1~N一定存在峰值) 我的理解是,首先已知 nums[mid+1]>nums[mid],那 ...

  4. Leetcode 162. 寻找峰值 解题思路及C++实现

    解题思路: 这道题应该归为简单,只要找到第一个降序的值就可以了. class Solution { public:int findPeakElement(vector<int>& ...

  5. python寻峰,[LeetCode][Python]162. 寻找峰值

    [LeetCode][Python]162. 寻找峰值 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数 ...

  6. leetcode刷题 162.寻找峰值

    题目分析: 通过题目,我们发现这题的本质是寻找一段数组范围内的最大值,我们可以通过不断的缩小数组范围来寻找目标值,由缩小数组范围我们可以联想到二分查找,但是此二分查找有一不同点,就是中值不是同左右界值 ...

  7. 【LeetCode笔记】162. 寻找峰值(Java、二分、偏数学)

    文章目录 题目描述 思路 && 代码 1. 暴力法 O(n) 2. 二分法 O(logN) 二刷 打卡第十七天- 题目描述 难点在于 logN 复杂度 思路 && 代码 ...

  8. leetcode 162. Find Peak Element | 162. 寻找峰值(二分法找局部最大值)

    题目 https://leetcode.com/problems/find-peak-element/ 题解 2021-7-21 16:28:31 更新版思路: 根据左神在 课上 说的,可以使用二分法 ...

  9. python寻峰,LeetCode-python 162.寻找峰值

    题目链接 难度:中等       类型: 数组 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数组可能包 ...

  10. leetcode 寻找峰值

    162. 寻找峰值 峰值元素是指其值严格大于左右相邻值的元素. 给你一个整数数组 nums,找到峰值元素并返回其索引.数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可. 你可以假设 ...

最新文章

  1. 【 FPGA 】时钟简介
  2. 使用fontTools库
  3. Windows环境下在IDEA编辑器中spark开发安装步骤
  4. Spring再次涵盖了您:继续进行消费者驱动的消息传递合同测试
  5. 作者:林嘉洺(1992-),男,华南师范大学计算机学院硕士生。
  6. A quick presentation of the Visual Studio 2010 editions per role
  7. Python学习笔记:requests库
  8. 组装一台微型计算机需要哪些部件6,微型计算机的组成与配置(6页)-原创力文档...
  9. python多线程爬虫界面_Python实现贴吧多线程网盘爬虫
  10. [转载] 七龙珠第一部——第072话 恶魔的厕所
  11. oracle中kill session的方法
  12. 第一章 JSP编程技术
  13. 模电数电高频电路综合实验成套设备QY-MS535G
  14. 图书销售系统系统设计说明书
  15. window下强制删除文件
  16. hhkb mac设置_HHKB 键盘 使用攻略 Karabiner
  17. mysql 大文本_MySQL长文本存储类型
  18. light动名词_动名词ing的用法
  19. opencv:图像的读取和显示
  20. 微信 css area,微信小程序--手写一个地区选择器(多级联动)

热门文章

  1. LeetCode 1111. 有效括号的嵌套深度(奇偶分离)
  2. LeetCode 1377. T 秒后青蛙的位置(BFS)
  3. LeetCode 557. 反转字符串中的单词 III(栈)
  4. 策略模式java 用例_java策略模式简单用例
  5. flutter text 最大长度_Flutter小技巧之TextField换行自适应
  6. 数据库实例:mysql与redis结合用户登录
  7. vue 组件第一次不渲染问题_vue使用组件不渲染 只有代码变了才渲染
  8. 美团NLP中心算法实习生内推啦!
  9. Spring Cloud源码分析(一)Eureka
  10. 论文浅尝 | 从知识图谱流中学习时序规则