news 2026/9/10 8:03:54

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

作者头像

张小明

前端开发工程师

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/9/9 15:24:45

5.回溯算法

装载问题&#xff1a;问题描述&#xff1a;有一批共n个集装箱要装上载重量为c的轮船&#xff0c;其中集装箱i重量为wi&#xff0c;集装箱装载问题要求确定在不超过轮船载重量的前提下&#xff0c;将尽可能多的集装箱装上轮船&#xff0c;且集装箱的重量之和最大回溯算法实现&am…

作者头像 李华
网站建设 2026/9/9 12:08:52

嵌入式模组温控策略

一、为什么需要温控策略? 嵌入式模组(尤其是通信模组如4G/5G、Cat.1等)在运行时会发热,主要热源包括: 基带处理器:信号编解码、协议处理 射频功率放大器:信号发射时功耗最大 电源管理芯片 环境温度影响:工业环境可达-40C ~ +85C 温度过高会导致:性能降频、通信中…

作者头像 李华
网站建设 2026/9/10 4:19:03

19、Linux 帧缓冲接口设计与图形库应用

Linux 帧缓冲接口设计与图形库应用 1. 帧缓冲操作基础 在进行帧缓冲操作时,当每个命令成功完成(对于大的帧缓冲可能需要一些时间),可能会看到错误信息: cat: write error: No space left on device这是因为尝试将无限的比特流写入有限的内存中。每次实验后,可输入 c…

作者头像 李华