news 2026/7/3 18:33:21

寻找峰值--优选算法(二分查找法)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
寻找峰值--优选算法(二分查找法)

一.网页直达

https://leetcode.cn/problems/find-peak-element

二.题目解析

解析:

题目上给出的时间复杂度就暗示我们需要使用二分算法,我们发现相邻位置没有相同的数字.

我们先来想暴力解法:遍历数组,利用单调性的变化来判断是否是峰值,或者是单调不变的那峰值就是第一个数或者是最后一个数.(一共三种情况),时间复杂度就是O(N)

我们抽象出一个模型出来,找到二段性,使用二分查找.

情况一就是arr[mid]>arr[mid+1],说明结果一定在二段性的左边.while更新右边区间right=mid,继续寻找峰值.

情况二:就是arr[mid]<arr[mid+1],说明结果一定在二段性的右边.while更新左边区间left=mid+1,继续寻找峰值.

代码实现:

class Solution { public: int findPeakElement(vector<int>& nums) { int left=0,right=nums.size()-1; while(left<right) { int mid =left+(right-left)/2; if(nums[mid]>nums[mid+1])right=mid; else left=mid+1; } return left; } };

二分法不是只在单调区间里面的,只需要找到二段性,就可以使用.

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 21:27:14

48、网络故障排查工具与方法全解析

网络故障排查工具与方法全解析 在网络运维和故障排查过程中,拥有合适的工具和掌握有效的方法至关重要。本文将详细介绍一系列网络诊断和修复的工具及使用方法,帮助你更好地应对网络问题。 构建网络诊断和修复笔记本 拥有一台用于网络诊断和修复的笔记本是非常实用的。不需…

作者头像 李华
网站建设 2026/7/2 0:24:55

56、Linux 内核构建与网络配置全解析

Linux 内核构建与网络配置全解析 1. 新增可加载内核模块 在 Linux 系统中,添加新的可加载内核模块是一项常见操作。以下是具体步骤: 1. 切换到包含构建树的目录,如 ~/kernel/linux - 2.6.20.1 。 2. 获取一个最新的配置文件,并将其复制到构建树的顶层。然后运行命令:…

作者头像 李华
网站建设 2026/6/30 17:02:25

Kafka 的认证机制

Kafka 的认证机制主要围绕客户端与 broker、broker 与 broker、broker 与 Controller、工具类&#xff08;如 kafka-console-producer&#xff09;与 broker 之间的身份验证展开&#xff0c;官方及社区主流支持的认证方式可分为六大类&#xff0c;涵盖从简单的用户名密码到强安…

作者头像 李华
网站建设 2026/7/3 7:48:16

动态住宅IP和静态住宅IP使用上有差异吗?

在互联网连接的世界中&#xff0c;IP地址是我们识别和访问网络资源的关键。住宅IP地址&#xff0c;特别是动态住宅IP和静态住宅IP&#xff0c;是两种不同类型的IP分配方式&#xff0c;它们在使用和功能上存在显著差异。 1. IP地址的稳定性 动态住宅IP&#xff1a;这种IP地址是…

作者头像 李华
网站建设 2026/7/1 1:52:39

一文详解Spring Bean的循环依赖问题及解决方案(三级缓存)

01-什么是Bean的循环依赖A对象中有B属性&#xff0c;B对象中有A属性&#xff0c;这就是循环依赖。我依赖你&#xff0c;你也依赖我例如&#xff1a;Bean A 依赖 Bean B&#xff0c;Bean B 依赖 Bean AService public class ServiceA {Autowiredprivate ServiceB serviceB; // …

作者头像 李华