【LeetCode】162. 寻找峰值

news2024/9/23 15:22:52

1. 题目

2. 分析

这道题的难点有二:第一,知道用二分法求解;第二,二分判断的标准是什么?传统的题目的二分标注都是跟某个固定的值做比较,但是此题不然。此题的比较对象是相邻的元素

不要硬凭自己的脑子想,要结合题意,将分析落到纸上。

3. 代码

根据上面的分析,那么可以得到下面这个代码:

class Solution:
    def findPeakElement(self, nums: List[int]) -> int:
        left = 0
        right = len(nums)-1

        if len(nums) == 1:
            return 0     
        if len(nums) == 2:
            if nums[0] > nums[1] :
                return 0
            else:
                return 1        
        while(left <= right):
            mid = (left + right) // 2
            if mid == 0:
                if nums[mid] > nums[mid+1]:
                    return 0
            if mid == len(nums) - 1:
                if nums[mid] > nums[mid-1]:
                    return mid
            if nums[mid-1] < nums[mid] < nums[mid+1]:
                left = mid+1
            elif nums[mid-1] > nums[mid] > nums[mid+1]:
                right = mid-1
            elif nums[mid-1] < nums[mid] and nums[mid] > nums[mid+1]:
                return mid
            else: # 先减后增
                left = mid+1

上面这个代码一堆if-else,显然不够优雅。可以看到其主要拙劣的地方在于对mid 值的判断。借鉴一下官方题解中的代码:
在这里插入图片描述
写的确实比我的代码好。

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

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

相关文章

spring是如何解决循环依赖的,为什么不是两级

1. Spring使用三级缓存来解决循环依赖问题 Spring使用三级缓存来解决循环依赖问题&#xff0c;‌而不是使用两级缓存。‌ 在Spring框架中&#xff0c;‌解决循环依赖的关键在于正确地管理Bean的生命周期和依赖关系。‌循环依赖指的是两个或多个Bean相互依赖&#xff0c;‌如果…

FastApi地理坐标数据存取实践

说明&#xff1a; 应用Pydantic Model 验证/出入 数据&#xff0c; SqlAlchemy Model数据实体&#xff0c;Fastapi提供API机制支持。数据表的坐标字段采用Mysql的GEOMETRY类型目前还没成功使用Pydantic的Coordinate类型&#xff0c;待后续改良 要点&#xff1a; 输出的结果是…

多级表头固定列问题

父级的width&#xff0c;是需要固定的列的width的总和 参考&#xff1a; el-table 多级表头下对应列的固定

Android Studio 不再支持windows 7

Android Studio 一打开就报错&#xff1a; 无法找到入口 无法定位程序输入点 CreateAppContainerProfle 于动态链接库USERENV.dII 上。 截图如下&#xff1a; 经调查&#xff0c;是因为系统版本不兼容。 我目前的电脑环境&#xff1a;windows 7,但是现在的Android Studio要…

leetcode145. 二叉树的后序遍历,递归法+迭代法,全过程图解+步步解析,一点点教会你迭代法后序遍历

leetcode145. 二叉树的后序遍历&#xff0c;递归法迭代法 给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[3,2,1] 示例 2&#xff1a; 输入&#xff1a;root [] 输出&#…

Java学习高级四

JDK8开始&#xff0c;接口新增了三种形式的方法 接口的多继承 内部类 成员内部类 静态内部类 局部内部类 匿名内部类 import javax.swing.*; import java.awt.event.ActionEvent;public class Test {public static void main(String[] args) {// 扩展 内部类在开发中的真实使用…

H264解码器实现-帧间预测之MV预测

1.前言 本文章所说的MV预测是指计算当前块MV向量的预测值&#xff0c;该值与码流中传输的MV残差值相加即可得到实际的MV向量。请注意&#xff0c;在某些宏块类型的某种情况下是不需要进行MV预测的&#xff0c;他们的MV可以通过其他方法得出&#xff0c;本文只介绍MV预测过程。…

21.x86游戏实战-实现注入器

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

C++:模板编程入门

什么是模板编程 假设我们需要实现对整形、浮点型、双精度型数据的交换函数&#xff0c;一般情况我们需要重载三个函数&#xff0c;但是使用模板&#xff0c;我们使用一个函数就能解决。 函数在编译时进行重载。 #include <iostream>using namespace std;template <t…

leetcode热题100.分割等和子集(动态规划)

分割等和子集 Problem: 416. 分割等和子集 思路 我选择使用动态规划的方法来解题。我们需要判断是否可以将数组分割成两个子集&#xff0c;使得这两个子集的和相等。这个问题可以转化为在数组中找到一个子集&#xff0c;使得其和等于数组总和的一半。 解题过程 首先&#xf…

Linux常见配置

linux 常见配置 一、配置固定IP, 主机名映射二、配置环境变量三、vim配置四、ssh配置 一、配置固定IP, 主机名映射 1、修改主机名 hostnamectl set-hostname xxx2、Centos配置固定IP 使用vim编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件&#xff0c;填入下图信息 …

SpringCloud教程 | 第九篇: 使用API Gateway

1、参考资料 SpringCloud基础篇-10-服务网关-Gateway_springcloud gateway-CSDN博客 2、先学习路由&#xff0c;参考了5.1 2.1、建了一个cloudGatewayDemo&#xff0c;这是用来配置网关的工程&#xff0c;配置如下&#xff1a; http://localhost:18080/aaa/name 该接口代码如…

c++初阶知识——内存管理与c语言内存管理对比

目录 前言&#xff1a; 1.c&#xff0b;&#xff0b;内存管理方式 1.1 new和delete操作自定义类型 2.operator new与operator delete函数 2.1 operator new与operator delete函数 3.new和delete的实现原理 3.1 内置类型 3.2 自定义类型 new的原理 delete的原理 new…

浅谈数学模型在UGC/AIGC游戏数值配置调参中的应用(AI智能体)

浅谈数学模型在UGC/AIGC游戏数值配置调参中的应用 ygluu 卢益贵 关键词&#xff1a;UGC、AIGC、AI智能体、大模型、数学模型、游戏数值调参、游戏策划 一、前言 在策划大大群提出《游戏工厂&#xff1a;AI&#xff08;AIGC/ChatGPT&#xff09;与流程式游戏开发》讨论之后就…

ctfshow-web入门-php特性(web127-web131)

目录 1、web127 2、web128 3、web129 4、web130 5、web131 1、web127 代码审计&#xff1a; $ctf_show md5($flag); 将 $flag 变量进行 MD5 哈希运算&#xff0c;并将结果赋值给 $ctf_show。 $url $_SERVER[QUERY_STRING]; 获取当前请求的查询字符串&#xff08;que…

[职场] MARKETINGSPECIALIST是什么 #笔记#微信#知识分享

MARKETINGSPECIALIST是什么 MARKETINGSPECIALIST&#xff0c;即市场营销专员&#xff0c;他们需要具备一定的专业知识和技能&#xff0c;以适应快速变化的市场环境。接下来&#xff0c;我们将详细探讨这个职位的工作内容、必备技能以及发展前景。 一、MARKETINGSPECIALIST是什么…

机器学习西瓜书笔记(二)

机器学习西瓜书笔记二 第二章(chapter 2) 模型评估与选择 (参考机器学习西瓜书)第一节(section 1)经验误差与过拟合第二节(section 2)评估方法留出法交叉验证法自助法调参与最终模型第三节(section 3)性能度量错误率与精度查准率与查全率ROC与AUC代价敏感错误率与代价…

软件测试之白盒测试与黑盒测试详解

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、软件测试基本分类 一般地&#xff0c;我们将软件测试活动分为以下几类&#xff1a;黑盒测试…

【BUG】已解决:IndexError: list index out of range

已解决&#xff1a;IndexError: list index out of range 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c;武汉城市开发者社区主…

NFS存储、API资源对象StorageClass、Ceph存储-搭建ceph集群和Ceph存储-在k8s里使用ceph(2024-07-16)

一、NFS存储 注意&#xff1a;在做本章节示例时&#xff0c;需要拿单独一台机器来部署NFS&#xff0c;具体步骤略。NFS作为常用的网络文件系统&#xff0c;在多机之间共享文件的场景下用途广泛&#xff0c;毕竟NFS配置方 便&#xff0c;而且稳定可靠。NFS同样也有一些缺点&…