news 2026/6/15 21:11:11

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

作者头像

张小明

前端开发工程师

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/6/15 10:43:51

47、Linux 拨号服务器搭建与网络故障排查全攻略

Linux 拨号服务器搭建与网络故障排查全攻略 1. 运行 Linux 拨号服务器的基础设置 在运行 Linux 拨号服务器时,首先要确保 /etc/ppp/chap-secrets 和 /etc/ppp/pap-secrets 文件的权限设置正确,只有文件所有者和所属组可以读写这些文件。可以使用以下命令进行设置: #…

作者头像 李华
网站建设 2026/6/15 10:43:52

RocketMQ 的架构

RocketMQ的核心架构包含三个主要组件&#xff0c;其组成结构如下图所示&#xff1a;主要组件说明&#xff1a;Producer&#xff08;生产者&#xff09;&#xff1a;负责向Broker发送消息Broker&#xff08;消息中转服务器&#xff09;&#xff1a;承担消息存储和转发的核心功能…

作者头像 李华
网站建设 2026/6/15 9:28:50

50、网络故障排查工具与方法详解

网络故障排查工具与方法详解 1. 使用 ngrep 进行高级数据包嗅探 ngrep 是一款强大的数据包嗅探工具,它能帮助我们对网络数据包进行精细搜索。以下是一些使用示例: - 特定内容匹配 : # ngrep -qpd eth0 1234 icmp此命令在 eth0 接口上,对 ICMP 协议的数据包进行嗅探,…

作者头像 李华
网站建设 2026/6/15 9:36:25

2、Linux网络基础与网络服务全解析

Linux网络基础与网络服务全解析 1. Linux网络管理基础 计算机网络旨在实现计算机之间的通信,看似简单,实则复杂。网络可分为计算机和连接计算机的设备两部分。在Linux环境下,网络管理涉及多个方面,包括防火墙、无线接入点、安全远程管理、远程帮助台、用户远程访问、虚拟…

作者头像 李华