【二分法】寻找峰值


求解代码

因为本题假设nums[-1]=nums[n]=-∞,所以,只要数组中存在一个元素比相邻的元素大,那么沿着它就一定可以找到一个峰值。

使用二分查找,比较mid和mid+1位置的值,如果mid位置的值更大,则左侧存在峰值;

如果mid+1位置的值更大,则右侧存在峰值。

java 复制代码
public int findPeakElement (int[] nums) {
        int left = 0;
		int right = nums.length;

		while(left<right){
			int mid = left+((right-left)>>1);
			if(nums[mid]>nums[mid+1]){
				right=mid;
			}else{
				left=mid+1;
			}
		}
		return left;
    }

注意⚠️:

这里说明一下为什么无序数组也能使用二分查找,主要是这道题通过比较numsmid和numsmid+1,可以确定峰值的位置区间,这满足二分的核心条件,所以无序也能用二分。

相关推荐
dongf20191 分钟前
R语言朴素贝叶斯算法---iris数据集
开发语言·算法·数据分析·r语言
小O的算法实验室2 分钟前
2025年KBS,基于强化学习离散状态转移算法+复杂约束下多无人机任务分配
算法
weixin_307779134 分钟前
从“大海捞针”到“主动推理”:AI如何重塑云原生故障诊断的根因链
开发语言·人工智能·算法·自动化·原型模式
京东云开发者7 分钟前
一键调用!京东云率先上线MiniMax M3
算法
papership15 分钟前
入门级-数据结构-2、简单树:二叉树的遍历(前序、中序、后序)
数据结构·算法
WWW652615 分钟前
代码随想录 打卡第五十四天
数据结构·c++·算法
happymaker062615 分钟前
LeetCodeHot100——15.三数之和
数据结构·算法
墨白曦煜17 分钟前
算法实战笔记:空间换时间的黑魔法——单调栈全景解析(十一)
java·笔记·算法
大模型最新论文19 分钟前
小红书提出 RedKnot:分头处理 kv 缓存,延时降低 60%效果还提升
算法
随意起个昵称25 分钟前
线性dp-LIS题目6(友好城市,二分优化)
算法·动态规划