【二分查找】Leetcode 寻找峰值

题目解析

162. 寻找峰值

在这里插入图片描述
题目中有一个很重要的提示:对所有有效的i都存在nums[i] != nums[i+1],因此这道题不需要考虑nums[mid] 和 nums[mid+1]之间的相等与否的关系


算法讲解

1. 暴力枚举
我们按照顺序判断每个数字是否是当前的峰值,如果是直接返回,如果不是继续寻找。如果寻找的数组末尾还没有寻找到,那么就是数组的最后一个元素

2. 二分法

在这里插入图片描述
如果当前的nums[i] < nums[i+1] 说明i左侧不一定会出现峰值,因为它是上升趋势,峰值一定会出现在i+1的右侧区域

反之,如果当前的nums[i] > nums[i+1] 说明i左侧一定会出现峰值,但是i+1右侧不一定会出现,因为它是下降趋势的

又因为题目中说明没有一个合理的i,存在num[i] == nums[i+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;//右边一定存在峰值if(nums[mid] < nums[mid + 1])left = mid + 1;}return left;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/601099.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络基础——vrrp

前言&#xff1a;除了一个MPLS这个协议&#xff0c;其他的协议都差不多会在后面介绍&#xff0c;但是MPLS却不会介绍&#xff0c;因为自己本人学的不是很好&#xff0c;而且在企业网中&#xff0c;接触的机会也更少&#xff0c;除非是做ISP网络的&#xff0c;下面会先介绍VRRP和…

【4月最新】低至50/年,4G 618/3年 云服务器价格即将回调 ,搭建网站 博客 Linux练习 比虚拟机方便 附阿里云 京东云 腾讯云对比表

更新日期&#xff1a;4月8日&#xff08;半年档 价格回调&#xff0c;京东云采购季持续进行&#xff09; 本文纯原创&#xff0c;侵权必究 《最新对比表》已更新在文章头部—腾讯云文档&#xff0c;文章具有时效性&#xff0c;请以腾讯文档为准&#xff01; 【腾讯文档实时更…

金蝶BI方案的报表,主打做得快、易理解

金蝶做数据分析报表慢、步骤多、数据不够直观&#xff1f;但奥威-金蝶BI方案的报表就不一样了&#xff0c;不仅做得快&#xff0c;还十分好理解&#xff0c;因为它做出来的是随时可以按需自助的BI智能数据可视化分析报表。 有多快&#xff1f; 注册奥威BI SaaS平台&#xff0…

2024/4/1—力扣—主要元素

代码实现&#xff1a; 思路&#xff1a;摩尔投票算法 int majorityElement(int *nums, int numsSize) {int candidate -1;int count 0;for (int i 0; i < numsSize; i) {if (count 0) {candidate nums[i];}if (nums[i] candidate) {count;} else {count--;}}count 0;…

谷歌seo最新优化方案是怎样的?

自从AI的出现&#xff0c;人们惊叹于AI的便利性&#xff0c;乃至网站内容都在使用AI更新&#xff0c;然而就在这个月&#xff0c;谷歌公布了最新的算法&#xff0c;这次更新真的是给了SEO界一个大震撼&#xff0c;尤其是对于那些依赖AI内容生成的网站来说&#xff0c;谷歌这次是…

Docker 集成 redis,并在nacos进行配置时需要注意点

安装redis镜像 docker pull redis:6.0.6redis配置文件 创建相关配置文件 mkdir /apps/redis cd /apps/redis touch redis.conf vim redis.confredis.conf内容&#xff1a; #开启保护 protected-mode yes #开启远程连接 bind 0.0.0.0 #自定义密码 port 6379 timeout 0 # 900s内…

快速为App打造Android端聊天室,节省80%开发成本(一)

前言 环信 ChatroomUIKit 提供 UIKit 的各种组件&#xff0c;能帮助开发者根据实际业务需求快速搭建聊天室应用&#xff0c;有效节约开发成本&#xff01;通过该 UIKit&#xff0c;聊天室中的用户可实时交互&#xff0c;发送普通弹幕消息、打赏消息和全局广播等功能。 本文详…

基于Socket简单的UDP网络程序

⭐小白苦学IT的博客主页 ⭐初学者必看&#xff1a;Linux操作系统入门 ⭐代码仓库&#xff1a;Linux代码仓库 ❤关注我一起讨论和学习Linux系统 1.前言 网络编程前言 网络编程是连接数字世界的桥梁&#xff0c;它让计算机之间能够交流信息&#xff0c;为我们的生活和工作带来便利…

【ESP32】调试总结

文章目录 1. 问题1&#xff1a;Invalid image block&#xff0c; cant boot2. 问题2&#xff1a;task_wdt: Task watchdog got triggered 1. 问题1&#xff1a;Invalid image block&#xff0c; cant boot 现象 ESP-ROM:esp32s3-20210327 Build:Mar 27 2021 rst:0x7 (TG0WDT_SY…

C++基础 命名空间、作用域、引用、结构体

0、前言 文章内容主要讲解C区别于C的部分。 1、命名空间 1.1 定义 命名空间&#xff08;Namespace&#xff09;是C中用来避免命名冲突并组织代码的一种机制。通过将代码放置在命名空间中&#xff0c;可以将不同部分的代码分隔开来&#xff0c;从而提高代码的可读性和可维护…

rsync + inotify 上行同步

一 上行同步相关概念 1&#xff0c;上行同步是什么 上行同步是指从本地&#xff08;发起端&#xff09;向远程&#xff08;同步源&#xff09;服务器推送数据的过程。在这种模式下&#xff1a; 本地机器作为数据的源头&#xff0c;通常包含需要更新或备份到远程服务器的…

知名度最高的3款电脑监控软件

知名度最高的3款电脑监控软件 公司电脑监控软件是一种安装在员工电脑上的软件&#xff0c;主要用于监控和管理员工的电脑屏幕操作、网络行为以及文件操作等。这种软件有助于企业提高员工的工作效率&#xff0c;保护公司的数据安全&#xff0c;并维护公司的IT健康环境。 市面有…