Leetcode--162. 寻找峰值
峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组 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. 寻找峰值相关推荐
- java 寻找峰值峰谷_Java实现 LeetCode 162 寻找峰值
162. 寻找峰值 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数组可能包含多个峰值,在这种情况下,返 ...
- LeetCode 162. 寻找峰值(二分查找)
1. 题目 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数组可能包含多个峰值,在这种情况下,返回任何一 ...
- LeetCode 162. 寻找峰值
为什么二分查找大的那一半一定会有峰值呢?(即nums[mid]<nums[mid+1]时,mid+1~N一定存在峰值) 我的理解是,首先已知 nums[mid+1]>nums[mid],那 ...
- Leetcode 162. 寻找峰值 解题思路及C++实现
解题思路: 这道题应该归为简单,只要找到第一个降序的值就可以了. class Solution { public:int findPeakElement(vector<int>& ...
- python寻峰,[LeetCode][Python]162. 寻找峰值
[LeetCode][Python]162. 寻找峰值 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数 ...
- leetcode刷题 162.寻找峰值
题目分析: 通过题目,我们发现这题的本质是寻找一段数组范围内的最大值,我们可以通过不断的缩小数组范围来寻找目标值,由缩小数组范围我们可以联想到二分查找,但是此二分查找有一不同点,就是中值不是同左右界值 ...
- 【LeetCode笔记】162. 寻找峰值(Java、二分、偏数学)
文章目录 题目描述 思路 && 代码 1. 暴力法 O(n) 2. 二分法 O(logN) 二刷 打卡第十七天- 题目描述 难点在于 logN 复杂度 思路 && 代码 ...
- leetcode 162. Find Peak Element | 162. 寻找峰值(二分法找局部最大值)
题目 https://leetcode.com/problems/find-peak-element/ 题解 2021-7-21 16:28:31 更新版思路: 根据左神在 课上 说的,可以使用二分法 ...
- python寻峰,LeetCode-python 162.寻找峰值
题目链接 难度:中等 类型: 数组 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数组可能包 ...
- leetcode 寻找峰值
162. 寻找峰值 峰值元素是指其值严格大于左右相邻值的元素. 给你一个整数数组 nums,找到峰值元素并返回其索引.数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可. 你可以假设 ...
最新文章
- 【 FPGA 】时钟简介
- 使用fontTools库
- Windows环境下在IDEA编辑器中spark开发安装步骤
- Spring再次涵盖了您:继续进行消费者驱动的消息传递合同测试
- 作者:林嘉洺(1992-),男,华南师范大学计算机学院硕士生。
- A quick presentation of the Visual Studio 2010 editions per role
- Python学习笔记:requests库
- 组装一台微型计算机需要哪些部件6,微型计算机的组成与配置(6页)-原创力文档...
- python多线程爬虫界面_Python实现贴吧多线程网盘爬虫
- [转载] 七龙珠第一部——第072话 恶魔的厕所
- oracle中kill session的方法
- 第一章	JSP编程技术
- 模电数电高频电路综合实验成套设备QY-MS535G
- 图书销售系统系统设计说明书
- window下强制删除文件
- hhkb mac设置_HHKB 键盘 使用攻略 Karabiner
- mysql 大文本_MySQL长文本存储类型
- light动名词_动名词ing的用法
- opencv:图像的读取和显示
- 微信 css area,微信小程序--手写一个地区选择器(多级联动)
热门文章
- LeetCode 1111. 有效括号的嵌套深度(奇偶分离)
- LeetCode 1377. T 秒后青蛙的位置(BFS)
- LeetCode 557. 反转字符串中的单词 III(栈)
- 策略模式java 用例_java策略模式简单用例
- flutter text 最大长度_Flutter小技巧之TextField换行自适应
- 数据库实例:mysql与redis结合用户登录
- vue 组件第一次不渲染问题_vue使用组件不渲染 只有代码变了才渲染
- 美团NLP中心算法实习生内推啦!
- Spring Cloud源码分析(一)Eureka
- 论文浅尝 | 从知识图谱流中学习时序规则