当前位置:网站首页>二分查找6 - 寻找峰值
二分查找6 - 寻找峰值
2022-08-03 05:25:00 【花开花落夏】
寻找峰值
一 题目
峰值元素是指其值严格大于左右相邻值的元素。
给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞ 。
你必须实现时间复杂度为 O(log n) 的算法来解决此问题。
来源:力扣(LeetCode)

二 解题
注意看题目,所有有效的i,都有nums[i] != nums[i+1], 说明nums[]里的所有值都不相等。而nums[-1] = nums[n] = -∞,则表示只要沿着值大的方向走,总会存在峰值。使用二分法来实现这一过程。
当left=0,right=nums时,mid值偏向右,此时可以比较mid-1与mid;
当left=0,right=nums-1时,mid值偏向左,此时可以比较mid与mid+1.
class Solution {
public int findPeakElement(int[] nums) {
int left =0,right=nums.length-1,mid;
while(left<right){
mid = left + (right-left)/2;
if(nums[mid]>nums[mid+1]){
right = mid;
}else{
left = mid+1;
}
}
return left;
}
}
边栏推荐
- 自监督论文阅读笔记FIAD net: a Fast SAR ship detection network based on feature integration attention and self
- ZEMAX | 在 OpticStudio 中使用自由曲面进行设计
- ARMv8 架构----armv8 类别
- 二、Exception和Error有什么区别?
- 全球一流医疗技术公司如何最大程度提高设计工作效率 | SOLIDWORKS 产品探索
- ZEMAX | 在OpticStudio中建立扩增实境(VR)头戴式显示器
- NIO知识汇总 收藏这一篇就够了!!!
- 2021-03-22
- 自监督论文阅读笔记 DetCo: Unsupervised Contrastive Learning for Object Detection
- enum和enum class的区别
猜你喜欢
随机推荐
进程间通信IPC - 信号量
三、final、finally、 finalize有什么不同?
神经网络基础
Phase Vocoder的补充完善,Matlab音频变速不变调、变调不变速
block底层探索
JS--正则表达式
VSCODE 常见问题
What is parametric design, let's understand it through practical operation?| SOLIDWORKS How-To Videos
使用JSP实现简单的登录注册功能,并且使用Session跟踪用户登录信息
Makefile
A.1#【内存管理】——1.1.3 page: struct page
Delightful Nuxt3 Tutorial (2): Build a Blog Quickly and Easily
POE交换机全方位解读(中)
电容器和电池有什么不同?
中空编码器的作用——唯样商城
KASLR-内核地址空间布局随机化
嵌入汇编-1 格式讲解
基于南航app直减自动出票
@JsonProperty和JSONField的区别?
001_旭日X3派初探:开箱测试





