当前位置:网站首页>leetcode:162. 寻找峰值
leetcode:162. 寻找峰值
2022-08-03 02:04:00 【OceanStar的学习笔记】
题目来源
题目描述
class Solution {
public:
int findPeakElement(vector<int>& nums) {
}
};
题目解析
分析题意
首先要注意题目条件,在题目描述中出现了 nums[-1] = nums[n] = -∞,这就代表着只要数组中存在一个元素比相邻元素大,那么沿着它一定可以找到一个峰值
因为数组中的峰值不止一个,我们找到任意一个即可。
题目还告诉我们对于所有有效的i都有 nums[i] != nums[i + 1],即数组中的任意两个相邻数都不相等。
思路
- 我们使用二分来做,每次找出区间的中点mid,比较nums[mid]与nums[mid + 1]的大小关系来推断哪个区间内一定存在峰值,然后取一定存在峰值的区间。这样不断缩小区间范围,区间所剩下的最后一个数就是答案。
过程
- 二分的边界:
l = 0, r = nums.size() - 1
- 如果
nums[mid] > nums[mid + 1]
,那么在[l, mid]这个区间内一定存在一个峰值。因为[l,mid]这一段如果是单调递减的话,那么nums[l]就是峰值,否则第一个出现上升的点就是峰值。
- 如果nums[mid] < nums[mid + 1],那么在[mid+1, r]这个区间内一定存在一个峰值。因为[mid+1,r]这一段如果是单调递增的话,那么nums[r]就是峰值,否则第一个出现下降的点就是峰值。
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int N = nums.size();
int L = 0, R = N - 1;
while (L < R){
int mid = L + (R - L) / 2;
if(nums[mid] > nums[mid + 1]){
R = mid;
}else{
L = mid + 1;
}
}
return R;
}
};
边栏推荐
- vsftp容器搭建+go开发web用户管理界面(更新于2022.02.23)
- 容联云发送验证码
- Wei Dongshan Digital Photo Frame Project Learning (5) Transplantation of libjpeg-turbo
- 通过kubernetes可视化界面(rancher)安装kibana
- Excel 如何比较两列字符串是否相同?
- Summary of some interviews
- 能添加任意贴图超级复布局的初级智能文本提示器(超级版)
- Introduction to agile development
- iNFTnews | 元宇宙的潜力:一股推动社会进步的力量
- Incorrect datetime value: '2022-01-01' for function str_to_date
猜你喜欢
370万欧元!西班牙iPronics加速可重构光子芯片商用
无法启动服务 错误 193 0xc1
OpenWRT setup ipv6 network
EasyGBS播放器优化:设备通道视频播放出现跳屏问题的修复
实现统一账号登录,sonarqube集成ldap
radio button、qss文件环境配置
什么情况下DigiCert证书会引起发生安全警报?
问题记录:jenkins构建时报错The goal you specified requires a project to execute but there is no POM in...
粘包与拆包
The cornerstone of high concurrency: multithreading, daemon threading, thread safety, thread synchronization, mutual exclusion lock, all in one article!...
随机推荐
Likou second week wrong questions collection
Usage of permute() function in pytorch
堆的应用:堆排序和TOP-K问题
【Flink】使用arthas在线诊断flink的那些事
List转Map的几种方式
一篇文章玩明白Stack-migration
公司封装方式导出excel过程
HCIP第十二天_二层MPLS实验
YYGH-BUG-06
扩展卡尔曼滤波【转】
PHICOMM(斐讯)N1盒子 - Armbian5.77(Debian 9)基本配置
大厂标配 | 百亿级并发系统设计 | 学完薪资框框涨
pytorch 中 permute()函数的用法
Conversational Technology!
征集 |《新程序员》专访“Apache之父”Brian Behlendorf,你最想问什么?
initramfs详解-----初识initramfs
Incorrect datetime value: ‘2022-01-01‘ for function str_to_date
PHICOMM(斐讯)N1盒子 - recovery模式救砖卡登录页LOGO卡1%卡4%卡26%
.NET in-depth analysis of the LINQ framework (four: IQueryable, IQueryProvider interface details)
sql注入是什么意思以及防止sql注入?