LeetCode 162. 寻找峰值(二分查找)
1. 题目
峰值元素是指其值大于左右相邻值的元素。
给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1]
,找到峰值元素并返回其索引。
数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞
。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-peak-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 二分查找
题目假设nums[-1]=nums[n]=-∞
。
如果nums[i] > nums[i+1],则在
i
之前一定存在峰值元素如果nums[i] < nums[i+1],则在
i+1
之后一定存在峰值元素
添加两个虚拟左右端点,二分查找
class Solution {public:int findPeakElement(vector<int>& nums) {nums.push_back(INT_MIN);reverse(nums.begin(), nums.end());nums.push_back(INT_MIN);reverse(nums.begin(), nums.end());int i = 1, j = nums.size()-2, mid;while(i <= j){mid = i+((j-i)>>1);if(nums[mid-1] < nums[mid] && nums[mid] > nums[mid+1])return mid-1;//原数组移动了一位if(nums[mid] > nums[mid+1])j = mid-1;elsei = mid+1;}return mid-1;//原数组移动了一位}
};
LeetCode 162. 寻找峰值(二分查找)相关推荐
- java 寻找峰值峰谷_Java实现 LeetCode 162 寻找峰值
162. 寻找峰值 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 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刷题笔记——二分查找
leetcode刷题笔记--二分查找 目前完成的贪心相关的leetcode算法题序号: 中等:80,81 困难:4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com ...
- LeetCode简单题之二分查找
题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1. 示例 1: 输入: n ...
- 5、leetcode剑指offer53 二分查找之0~n-1缺失的数字**
leetcode剑指offer53 二分查找之0~n-1缺失的数字 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一个 ...
- leetcode刷题 162.寻找峰值
题目分析: 通过题目,我们发现这题的本质是寻找一段数组范围内的最大值,我们可以通过不断的缩小数组范围来寻找目标值,由缩小数组范围我们可以联想到二分查找,但是此二分查找有一不同点,就是中值不是同左右界值 ...
- Leetcode中几道二分查找(Binary Search)的算法题总结
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列.二分查找法的时间复杂度是对数级别的,O(lo ...
最新文章
- springboot源码 红色J_通达信副图指标源码之,出手就赢
- 如何使用CNN进行物体识别和分类_可能我们之前都想错了:CNN的图像分类策略其实出奇的简单呢!...
- UML该元素的行为为基础的元素
- 如何打造顶级目标检测算法?百度官方揭秘 ECCV2020 双料冠军的理论与实践
- 深入学习Spring框架(二)- 注解配置
- mysql的读写分离技术_mysql 读写分离方法
- 计算机html基础试题与答案,2019年大学计算机基础试题题库及答案.docx
- css属性中如果后面个三个值,那么中间的那个一般代表左右元素的值。
- android编译make错误——javalib.jar invalid header field”、classes-full-debug.jar 错误 41 ...
- PHP file_get_contents(‘php://input‘) 和POST的区别
- 《深入理解Nginx》 学习笔记(一)
- 推荐系统(Recommendation System )介绍
- 人行征信报告介绍(一)
- 象棋世家 v6.0a 官方
- speedoffice(Word)如何给文字添加下划线
- 怎么去视频水印?一键去除视频水印
- rule of thumb - “经验法则”或者“拇指规则”
- ecshop数据字典
- android 使用SAF框架操作外置sd卡
- 计算机网络ping作用是什么,ping