leetcode 162. 寻找峰值(优质解法)

news2024/9/28 4:16:36

代码:

class Solution {
    public int findPeakElement(int[] nums) {
        int left=0,right=nums.length-1;
        while (left<right){
            int mid=left+(right-left)/2;

            if(nums[mid]>nums[mid+1]){
                right=mid;
            }else {
                left=mid+1;
            }
        }

        return left;
    }
}

题解:

        通过题意进行分析我们知道

        1.数组中有多个峰值,我们只需要找出其中的一个即可

        2. nums[-1] = nums[n] = -∞ 

        我们可以做出如下的图示:

        当 nums[i]>nums[i+1]时,i 下标的左边肯定存在一个峰值,因为最左边是 - ∞ ,所以必定需要经历递增,再在 i 这里经历递减,所以必定存在一个峰值,但 i 的右边,可能不会存在峰值,因为可以直接递减到 - ∞,所以我们可以大胆的去除掉 i 右边的数据(i 下标指向的数据不能去除,因为我们不确定 i 是否就是要找的峰值)

         当 nums[i] < nums[i+1]时,i 下标的右边肯定存在一个峰值,但 i 的左边,可能不会存在峰值,所以我们可以大胆的去除掉 i 左边的数据和 i 的值

        根据上述的分析,我们知道该题具有二段性,所以我们可以通过二分法来解决该问题,因为 nums[i]>nums[i+1]时 i 指针指向的数据才可能满足要求,所以相当于我们要找递减情况下的左边界

        通过示例1来进行分析:

输入:nums = [1,2,3,1]

        L 和 R 指针指向数组的两端,计算 mid = L+(R - L)/2 = 1,此时 nums[mid] < nums[mid+1],我们可以大胆去除 mid 及其 mid 左边的数据,让 L= mid+1

1        2        3        1

L       mid               R

        计算此时的中点 mid = 2,此时 nums[mid] > nums[mid+1] ,我们可以大胆去除 mid 右边的数据(不能去除 mid 指向的数据,因为我们不能确定 mid 指向的数据是否是我们要找的数据),让 R = mid

1        2        3        1

                    L        R

                   mid

        当 L 和 R 指针相遇时,我们便找到了需要的峰值

1        2        3        1

                    L        

                    R

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CRM是怎样帮助企业从激烈竞争中脱颖而出的?

有限的市场机会与资源推动了市场竞争。市场竞争是在所难免的&#xff0c;但企业可以借助CRM管理系统调整其业务策略&#xff0c;在市场上很多竞争者中突围。CRM系统怎样帮助企业赢得市场竞争&#xff1f; 以下五个功能点是关键&#xff1a;数据分析、客户管理、合作伙伴、营销自…

XCP详解「4.2·问题-加载信号过多导致FIFO buffer overflow」

APE write报问题 报文也提示80 溢出 检查测量配置

【噪音控制 】 铁氧体磁珠

1. 片状铁氧体磁珠的直流重叠特性 片状铁氧体磁珠是一种使用铁氧体的电感器。因此&#xff0c;当大电流通过时&#xff0c;需要特别注意由于磁饱和所造成的性能改变。图1是电流通过片状铁氧体磁珠时的阻抗值的变化示例。 图1 片状铁氧体磁珠的直流重叠特性示例 正因如此&am…

2023一起益企广东省中小企业数字化赋能活动(深圳站)成功举办

12月12日&#xff0c;由广东工业和信息化厅指导&#xff0c;广东省中小企业服务中心、深圳市中小企业服务局主办&#xff0c;深圳联通承办的2023年“一起益企”广东省中小企业数字化赋能专项对接志愿服务活动&#xff08;深圳站&#xff09;在深圳成功举办。 本次活动涵盖中小企…

Failed to open the referenced table ‘qrtz_job_details‘

依赖【表】或者【其他对象】执行拉到最前面即可。

RocketMQ 总体概括

目录 概述RocketMQ 领域模型MQ 解决的问题电商平台案例初步设计引入中间件设计 MQ 选型结束 概述 官网地址 RocketMQ 领域模型 官方领域模型概述 下面图&#xff0c;是在自己理解的基础上&#xff0c;对官方的模型图添加了一些。 Topic&#xff1a;主题&#xff0c;可以理解…

用栈解决迷宫问题

思想 使用栈来解决迷宫问题的思想是通过深度优先搜索算法来探索迷宫中的路径。栈的特点是后进先出&#xff0c;这正好符合深度优先搜索的思想&#xff0c;即先探索一个方向直到无法继续为止&#xff0c;然后回溯到上一个节点&#xff0c;再探索其他方向。 具体来说&#xff0…

DC电源模块:为您的电子设备提供稳定可靠的能量

DC电源模块&#xff1a;为您的电子设备提供稳定可靠的能量 BOSHIDA DC电源模块是一种电子设备&#xff0c;用于为其他电子设备提供稳定可靠的直流电能。它通常由一个输入端&#xff0c;一个输出端和一些内部电路组成。输入端通常接收来自交流电源或其他电源的电能&#xff0c;经…

前端走向未来:真相还是焦虑的贩卖?

目录 一、为什么会出现“前端已死”的言论 二、你如何看待“前端已死” 三、前端技术的未来发展趋势 四、前端人&#xff0c;该如何打好这场职位突围战&#xff1f; 我的其他博客 一、为什么会出现“前端已死”的言论 近来&#xff0c;IT圈内流传着“Java 已死、前端已凉”…

冷链托盘四向穿梭车|适用于-18℃~-25℃海格里斯HEGERLS冷库型托盘四向车系统

近年来随着物流行业的迅猛发展&#xff0c;托盘式四向穿梭车在电力、食品、医用、冷链等等行业得到了广泛应用&#xff0c;尤其在冷链物流场景中应用较多&#xff0c;目前设备已具备在-20℃至-25℃的环境中运行&#xff0c;尤其是-18℃及以下的冷链系统&#xff0c;采用四向穿梭…

mysql8 windows下修改my.ini配置 this is incompatible with sql_mode=only_full_group_by

1、找到安装路径 show variables like %sql_mode;SHOW VARIABLES LIKE config_file;SHOW VARIABLES LIKE %datadir%;SHOW VARIABLES; 2、修改 sql_modeSTRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

Android取消深色适配

从Android10&#xff08;API 29&#xff09;开始&#xff0c;在原有的主题适配的基础上&#xff0c;Google开始提供了Force Dark机制&#xff0c;在系统底层直接对颜色和图片进行转换处理&#xff0c;原生支持深色模式。当系统设置深色主题背景或者进入省电模式情况下会进入深色…

cgteamwork与shotgrid对比

最近有项目接触使用并二开cgteamwork&#xff0c; 也重新认识了cgteamwork&#xff0c;感受到国产软件的强大&#xff0c;国内中小CG公司的首选&#xff0c;原因&#xff1a; 1 上手容易&#xff0c;不会的有售前工程师教&#xff0c;他们全国各地城市到处跑。 感概业务的强大…

Educoder--Linux实验--FTP服务器搭建(第1关~第4关)

第1关 sudo apt-get update sudo apt-get install vsftpd 过程中出现中断时&#xff0c;按“Y”继续。 第2关 sudo service vsftpd start sudo service vsftpd status 第3关 启动vsftpd服务&#xff1b; service vsftpd start 初始化嘎嘎重要&#xff01;&#xff01; …

台式扫描电镜与落地式扫描电镜详细对比

随着材料科学和微纳技术的快速发展&#xff0c;扫描电子显微镜已成为研究微观结构的一种重要工具。根据外形体积的不同&#xff0c;扫描电镜可以分为两大类:落地式扫描电镜和台式扫描电镜。本文将从探测器、易操作性、安装环境和价格等多个方面对两者进行比较。 一、发展历史 …

产品经理必掌握自定义元件流程图泳道图

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a; 《产品经理管理项目周期及【Axure RP9】简介&安装&基本使用》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、什么是自定义元件 1.1如何自定义元件 二、什么是流程图 &…

可替代LM5145,5.5V-100V Vin同步降压控制器_SCT82A30

SCT82A30是一款100V电压模式控制同步降压控制器&#xff0c;具有线路前馈。40ns受控高压侧MOSFET的最小导通时间支持高转换比&#xff0c;实现从48V输入到低压轨的直接降压转换&#xff0c;降低了系统复杂性和解决方案成本。如果需要&#xff0c;在低至6V的输入电压下降期间&am…

销售技巧培训之如何提升金融销售技巧

销售技巧培训之如何提升金融销售技巧 在金融行业&#xff0c;销售技巧是决定业绩成败的关键因素之一。无论是销售保险、股票、债券&#xff0c;还是提供投资咨询服务&#xff0c;都需要掌握一定的销售技巧。本文将探讨如何提升金融销售技巧&#xff0c;通过案例分析&#xff0…

【虹科分享】基于Redis Enterprise,LangChain,OpenAI 构建一个电子商务聊天机器人

如何构建你自己的商务聊天机器人&#xff1f;注意哦&#xff0c;是你自己的聊天机器人。一起来看看Redis Enterprise的向量检索是怎么帮你实现这个愿望的吧。 鉴于最近人工智能支持的API和网络开发工具的激增&#xff0c;似乎每个人都在将聊天机器人集成到他们的应用程序中。 …

倾角仪(xyz)理解

第一列是初始值 x更小&#xff0c;说明往左倾 x更大&#xff0c;说明往右倾 z更大、y更大&#xff0c;说明往后倾 z更小、y更大&#xff0c;说明往前倾