【LeetCode】162. 寻找峰值

1. 题目

2. 分析

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

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

3. 代码

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

class Solution:def findPeakElement(self, nums: List[int]) -> int:left = 0right = len(nums)-1if len(nums) == 1:return 0     if len(nums) == 2:if nums[0] > nums[1] :return 0else:return 1        while(left <= right):mid = (left + right) // 2if mid == 0:if nums[mid] > nums[mid+1]:return 0if mid == len(nums) - 1:if nums[mid] > nums[mid-1]:return midif nums[mid-1] < nums[mid] < nums[mid+1]:left = mid+1elif nums[mid-1] > nums[mid] > nums[mid+1]:right = mid-1elif nums[mid-1] < nums[mid] and nums[mid] > nums[mid+1]:return midelse: # 先减后增left = mid+1

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

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

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

相关文章

LeetCode第106题:从中序与后序遍历序列构造二叉树的Java实现

摘要 LeetCode第106题要求使用一棵树的中序遍历和后序遍历序列来重建二叉树。本文将介绍两种Java实现方法&#xff1a;递归和迭代。 1. 问题描述 给定一棵树的中序遍历和后序遍历序列&#xff0c;重建出这棵树的唯一二叉树结构。 2. 示例分析 输入&#xff1a;[1,2,4]&…

C语言·函数(超详细系列·全面总结)

前言&#xff1a;Hello大家好&#x1f618;&#xff0c;我是心跳sy&#xff0c;为了更好地形成一个学习c语言的体系&#xff0c;最近将会更新关于c语言语法基础的知识&#xff0c;今天更新一下函数的知识点&#xff0c;我们一起来看看吧&#xff01; 目录 一、函数是什么 &a…

vue、js截取视频任意一帧图片

html有本地上传替换部分&#xff0c;可以不看 原理&#xff1a;通过video标签对视频进行加载&#xff0c;随后使用canvas对截取的视频帧生成需要的图片 <template> <el-row :gutter"18" class"preview-video"><h4>视频预览<span&…

execv函数简单使用

在Unix-like系统中&#xff0c;execv 函数用于执行一个新的程序&#xff0c;同时可以传递参数给它。这个函数是 exec 系列函数之一&#xff0c;用于替换当前进程映像。 execv 的原型如下&#xff1a; int execv(const char *path, char *const argv[]); path&#xff1a;新程…

【边缘计算网关教程】9.对接ThingsBoard(MQTT协议)

前景回顾-【边缘计算网关教程】8.ModbusTCP采集存储Influxdb-CSDN博客 目录 需求分析 平台配置&#xff1a; 需求实现 第一步&#xff1a;采集Modbus TCP数据 第二步&#xff1a;拼接Json 第三步&#xff1a;MQTT上报 平台配置 第一步&#xff1a;添加设备 ​编辑第二…

国内新能源汽车芯片自给,承认差距,任重道远

【科技明说 &#xff5c; 科技热点关注】 据近日工信部电子五所元器件与材料研究院高级副院长罗道军表示&#xff0c;中国拥有最大的新能源车产能&#xff0c;芯片用量也是越来越多。但是芯片的自给率目前不到10%&#xff0c;是结构性的短缺。 中国拥有最大新能源车产能&#…

自学网络安全:从菜鸟到守护者的蜕变之旅

在这个数字化时代&#xff0c;网络安全不再是遥不可及的专业术语&#xff0c;而是与我们每个人的生活息息相关。随着网络攻击事件的频发&#xff0c;掌握一定的网络安全知识&#xff0c;不仅是对个人隐私的保护&#xff0c;更是对社会安全的贡献。今天&#xff0c;就让我们一起…

从太阳神到弥勒佛

对于学习英语的人来说&#xff0c;太阳神&#xff0c;最为知名的&#xff0c;就是阿波罗&#xff08;Apollo&#xff09;&#xff0c;人类最近的历史&#xff0c;最知名的&#xff0c;就是阿波罗计划。 说白了&#xff0c;阿波罗计划&#xff0c;这个音译词&#xff0c;对于英语…

用Docker来开发

未完成。。。 现在好像用Docker是越来越多了。之前其实也看过docker的原理&#xff0c;大概就是cgroup那些&#xff0c;不过现在就不看原理了&#xff0c;不谈理论&#xff0c;只看实际中怎么用&#xff0c;解决眼前问题。 用docker来做开发&#xff0c;其实就是解决的编译环境…

InceptionV3代码实现(Pytorch)

文章目录 Inception介绍InceptionV3代码实现第一步&#xff1a;定义基础卷积模块第二步&#xff1a;定义Inceptionv3模块InceptionAInceptionBInceptionCInceptionDInceptionE 第三步&#xff1a;定义辅助分类器InceptionAux第四步&#xff1a;搭建GoogLeNet网络第五步*&#x…

请你谈谈:spring bean的生命周期 - 阶段3:属性赋值(设置属性)

2024/07/17 22:17 : 两天内完成&#xff0c;敬请期待&#xff01;&#xff01;&#xff01; Spring属性赋值阶段是Spring Bean生命周期中的一个重要阶段&#xff0c;它紧随Bean的实例化之后。在这个阶段&#xff0c;Spring容器会根据BeanDefinition中定义的属性配置&#xff0…

使用 git 和 GitHub 互动

本文根据《GitHub入门与实践》整理 创建账户 要想使用GitHub那就必须先有GitHub账号,账号自行注册,不作介绍。 本地生成 SSH Key SSH 提供了一种安全的方式来通过不安全的网络进行通信。当你使用SSH key连接到GitHub时,你的身份是通过密钥对(一个公钥和一个私钥)来验…

PJA1介导的焦亡抑制是鼻咽癌产生耐药性的驱动因素

引用信息 文 章&#xff1a;PJA1-mediated suppression of pyroptosis as a driver of docetaxel resistance in nasopharyngeal carcinoma. 期 刊&#xff1a;Nature Communications&#xff08;影响因子&#xff1a;14.7&#xff09; 发表时间&#xff1a;2024年6月2…

unity 把Vuforia的Image做成预制件prefab后,通过ab加载或者其他动态加载后,扫描图片不会出现模型

//通过ab加载资源&#xff08;自己封装的ab加载的脚本&#xff09;GameObject go LoadHandle.Instance.LoadPrefab.LoadPrefabAssets("ImagePrefab");GameObject game GameObject.Instantiate(go);//加载预制件后&#xff0c;加载图片的数据库// 初始化 Vuforia I…

Lua 数组

Lua 数组 Lua 是一种轻量级的编程语言&#xff0c;广泛用于游戏开发、脚本编写和其他应用程序。在 Lua 中&#xff0c;数组是一种非常基础和重要的数据结构。本文将详细介绍 Lua 数组的概念、用法和操作方法。 数组的概念 在 Lua 中&#xff0c;数组实际上是一个列表&#x…

链接追踪系列-10.mall-swarm微服务运行并整合elk-上一篇的番外

因为上一篇没对微服务代码很详细地说明&#xff0c;所以在此借花献佛&#xff0c;使用开源的微服务代码去说明如何去做链路追踪。 项目是开源项目&#xff0c;fork到github以及gitee中&#xff0c;然后拉取到本地 后端代码&#xff1a; https://gitee.com/jelex/mall-swarm.gi…

密码学原理精解【7】

文章目录 流密码密码体制概述唯吉尼亚密码一、历史与背景二、加密算法三、特点与应用四、破译方法五、原理概述加密过程解密过程注意事项 流密码理论解释一、定义与原理二、特点与优势三、工作原理四、应用实例五、安全性与限制 RC4算法一、算法概述二、算法原理三、算法特点四…

11.FreeRTOS_事件组

事件组概述 事件组的作用&#xff1a; 可以等待某一个事件发生可以等待若干个事件发生可以等待若干个事件中的某一个事件发生 同步点是事件组的另一个使用方式&#xff0c;它可以让多个任务进行阻塞等待&#xff0c;当全部事件完成后&#xff0c;再一起解除任务的阻塞。常常…

【字幕】字幕特效入门

前言 最近两周调研了一下字幕特效的底层程序逻辑&#xff0c;因为工作内容的原因&#xff0c;就分享几个自己找的链接具体细节就不分享了&#xff0c;CSDN也是我的个人笔记&#xff0c;只记录一些简单的内容用于后续自己方便查询&#xff0c;顺便帮助一下正在苦苦查阅资料入门…

【JavaScript脚本宇宙】解锁 JavaScript 二维码/条形码库的指南

JavaScript框架中的二维码与条形码生成库大比拼&#xff1a;选择适合你项目的最佳利器 前言 随着二维码和条形码在商业和日常生活中的广泛应用&#xff0c;为了方便开发人员在各种前端框架和库中集成生成二维码和条形码的功能&#xff0c;出现了多款专门用于在不同JavaScript…