当前位置: 首页 > news >正文

派森 #P122. 峰值查找

描述

给定一个长度为n的列表nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可。 (1)峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于; (2)列表两个边界可以看成是最小,nums[0]=nums[-1]= −∞ (3)对于所有有效的 i 都有 nums[i] != nums[i + 1]。 

图片

 

样例

输入

2 4 1 2 7 8 4

输出

5

代码:

nums = []
s = input().split(' ')
for x in s:nums.append(float(x))
left, right = 0, len(nums) - 1
while left < right:mid = (left + right) // 2if nums[mid] > nums[mid + 1]:right = midelse:left = mid + 1
print(left)

代码解析:

  1. nums = []:定义一个空列表,用于存储输入的数字列表。
  2. s = input().split(' '):通过input()函数获取用户输入的一行字符串,并使用split(' ')方法将其拆分成一个字符串列表。默认情况下,split()方法使用空格作为分隔符来拆分字符串。
  3. for x in s::对字符串列表s进行迭代,将迭代的值依次赋给变量x。
  4. nums.append(float(x)):将字符串x转换为浮点数类型,并将其添加到nums列表中。
  5. left, right = 0, len(nums) - 1:同时为变量left和right赋初值。left表示当前搜索范围的左边界,初始为0;right表示当前搜索范围的右边界,初始为列表的最后一个索引。
  6. while left < right::当left小于right时,执行循环体内的代码。这表示搜索范围还没有缩小到只有一个元素。
  7. mid = (left + right) // 2:计算当前搜索范围的中间位置的索引。使用整数除法(//)确保mid是整数。
  8. if nums[mid] > nums[mid + 1]::比较mid位置上的元素值与其右边相邻元素的值。如果mid位置上的元素值大于右边相邻元素的值,说明峰值在mid的左边,将搜索范围缩小到[left, mid]。
  9. right = mid:将搜索范围的右边界更新为mid位置,因为nums[mid]已经不可能是峰值,可以排除掉。
  10. else::如果mid位置上的元素值小于或等于右边相邻元素的值,说明峰值在mid的右边,将搜索范围缩小到[mid+1, right]。
  11. left = mid + 1:将搜索范围的左边界更新为mid + 1,因为mid位置上的元素值已经被排除。
  12. print(left):打印最终得到的峰值的索引,即left的值。

利用了二分查找的思想来寻找峰值。通过不断缩小搜索范围,每次将搜索范围减半,直到找到峰值所在的位置。

相关文章:

派森 #P122. 峰值查找

描述 给定一个长度为n的列表nums&#xff0c;请你找到峰值并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个所在位置即可。 &#xff08;1&#xff09;峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于&#xff1b; &…...

基础网络详解4--HTTP CookieSession 思考

一、cookie技术思考 一台多用户浏览器发起了三笔请求&#xff0c;将某款产品放入购物车中&#xff0c;A一次&#xff0c;选择了篮球&#xff1b;B两次&#xff0c;第一次选了足球&#xff0c;第二次选了钢笔。如何确认选择篮球、足球、钢笔的请求属于谁呢&#xff1f;如果不确认…...

14. 利用Canvas自制时钟组件

1. 说明 在自定义时钟组件时&#xff0c;使用到的基本控件主要是Canvas&#xff0c;在绘制相关元素时有两种方式&#xff1a;一种时在同一个canvas中绘制所有的部件元素&#xff0c;这样需要不断的对画笔和画布的属性进行保存和恢复&#xff0c;容易混乱&#xff1b;另一种就是…...

微信小程序使用云存储和Markdown开发页面

最近想在一个小程序里加入一个使用指南的页面&#xff0c;考虑到数据存储和减少页面的开发工作量&#xff0c;决定尝试在云存储里上传Markdown文件&#xff0c;微信小程序端负责解析和渲染。小程序端使用到一个库Towxml。 Towxml Towxml是一个可将HTML、Markdown转为微信小程…...

【C++】运算符重载 | 赋值运算符重载

Ⅰ. 运算符重载 引入 ❓什么叫运算符重载&#xff1f; 就是&#xff1a;运用函数&#xff0c;将现有的运算符重新定义&#xff0c;使其能满足各种自定义类型的运算。 回想一下&#xff0c;我们以前运算的对象是不是都是int、char这种内置类型&#xff1f; 那我们自定义的“…...

Python学习 -- 类对象从创建到常用函数

在Python编程中&#xff0c;类是一种强大的工具&#xff0c;用于创建具有共同属性和行为的对象。本篇博客将详细介绍Python中类和对象的创建&#xff0c;类的属性和方法&#xff0c;以及一些常用的类函数&#xff0c;通过丰富的代码例子来帮助读者深入理解。 一、类和对象的创…...

数组分割(2023省蓝桥杯)n种讨论 JAVA

目录 1、题目描述&#xff1a;2、前言&#xff1a;3、动态规划&#xff08;bug)&#xff1a;3、递归 剪枝&#xff08;超时&#xff09;&#xff1a;4、数学&#xff08;正解&#xff09;&#xff1a; 1、题目描述&#xff1a; 小蓝有一个长度为 N 的数组 A [A0, A1,…, AN−…...

很好的启用window10专业版系统自带的远程桌面

启用window10专业版系统自带的远程桌面 文章目录 启用window10专业版系统自带的远程桌面前言1.找到远程桌面的开关2. 找到“应用”项目3. 打开需要远程操作的电脑远程桌面功能 总结 前言 Windows操作系统作为应用最广泛的个人电脑操作系统&#xff0c;在我们身边几乎随处可见。…...

TCP定制协议,序列化和反序列化

目录 前言 1.理解协议 2.网络版本计算器 2.1设计思路 2.2接口设计 2.3代码实现&#xff1a; 2.4编译测试 总结 前言 在之前的文章中&#xff0c;我们说TCP是面向字节流的&#xff0c;但是可能对于面向字节流这个概念&#xff0c;其实并不理解的&#xff0c;今天我们要介…...

YOLOX在启智AI GPU/CPU平台部署笔记

文章目录 1. 概述2. 部署2.1 拉取YOLOX源码2.2 拉取模型文件yolox_s.pth2.3 安装依赖包2.4 安装yolox2.5 测试运行2.6 运行报错处理2.6.1 ImportError: libGL.so.1: cannot open shared object file: No such file or directory2.6.2 ImportError: libgthread-2.0.so.0: cannot…...

23种设计模式攻关

&#x1f44d;一、创建者模式 &#x1f516;1.1、单例模式 单例模式&#xff08;Singleton Pattern&#xff09;&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供全局访问点。 在某些情况下&#xff0c;我们需要确保一个类只能有一个实例&#xff0c;比如数据库连接…...

【jsthreeJS】入门three,并实现3D汽车展示厅,附带全码

首先放个最终效果图&#xff1a; 三维&#xff08;3D&#xff09;概念&#xff1a; 三维&#xff08;3D&#xff09;是一个描述物体在三个空间坐标轴上的位置和形态的概念。相比于二维&#xff08;2D&#xff09;只有长度和宽度的平面&#xff0c;三维增加了高度或深度这一维度…...

unity将结构体/列表与json字符串相互转化

编写Unity程序时&#xff0c;面对大量需要传输或者保存的数据时&#xff0c;为了避免编写重复的代码&#xff0c;故采用NewtonJson插件来将定义好的结构体以及列表等转为json字符串来进行保存和传输。 具体代码如下&#xff1a; using System; using System.IO; using Newtons…...

【Vue】vue2项目使用swiper轮播图2023年8月21日实战保姆级教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、npm 下载swiper二、使用步骤1.引入库声明变量2.编写页面3.执行js 总结 前言 swiper轮播图官网 参考文章&#xff0c;最好先看完他的介绍&#xff0c;再看…...

【算法日志】贪心算法刷题:单调递增数列,贪心算法总结(day32)

代码随想录刷题60Day 目录 前言 单调递增数列 贪心算法总结 前言 今天是贪心算法刷题的最后一天&#xff0c;今天本来是打算刷两道题&#xff0c;其中的一道hard题做了好久都没有做出来(主要思路错了)。然后再总结一下。 单调递增数列 int monotoneIncreasingDigits(int n…...

MATLAB算法实战应用案例精讲-【深度学习】模型压缩

目录 模型压缩概述 1. 为什么需要模型压缩 2. 模型压缩的基本方法 Patient-KD 1. Patient-KD 简介...

Matlab使用

Matlab使用 界面介绍 新建脚本&#xff1a;实际上就是新建一个新建后缀为.m的文件 新建编辑器&#xff1a;ctrlN 打开&#xff1a;打开最近文件&#xff0c;以找到最近写过的文件 点击路径&#xff0c;切换当前文件夹 预设&#xff1a;定制习惯用的界面 常见简单指令 ;…...

BladeX多数据源配置

启用多租户数据库隔离&#xff0c;会默认关闭mybatis-plus多数据源插件的启动&#xff0c;从而使用自定义的数据源识别 若不需要租户数据库隔离只需要字段隔离&#xff0c;而又需要用到多数据源的情况&#xff0c;需要前往LauncherService单独配置 数据源切换失败 详情请看说明…...

go里面关于超时的设计

设想一下你在接收源源不断的数据&#xff0c;如果有700ms没有收到&#xff0c;则认为是一个超时&#xff0c;需要做出处理。 逻辑上可以设计一个grouting,里面放一个通道&#xff0c;每收到一条数据进行相应处理。通道中夹杂一个timer定时器的处理&#xff0c;若通道在700ms内…...

Qt下使用ModbusTcp通信协议进行PLC线圈/保持寄存器的读写(32位有符号数)

文章目录 前言一、引入Modbus模块二、Modbus设备的连接三、各寄存器数据的读取四、各寄存器数据的写入五、示例完整代码总结 前言 本文主要讲述了使用Qt的Modbus模块来进行ModbusTcp的通信&#xff0c;实现对PLC的线圈寄存器和保持寄存器的读写&#xff0c;基于TCP/IP的Modbus…...

太阳能家用电池电源市场:预计到2032年将达到98.8亿美元

在全球能源转型与地缘政治风险交织的背景下&#xff0c;家庭能源自主性需求正催生一个高速增长的细分市场。据 恒州诚思&#xff08;YH Research&#xff09; 《全球太阳能家用电池电源市场报告2026-2032》预测&#xff0c;2032年该市场规模将达98.8亿美元&#xff0c;2026-203…...

AI Agent与传统RPA工具有什么本质区别?2026深度解析企业级智能体进化路径

在2026年3月下旬的当下&#xff0c;全球自动化技术正经历着从“按图索骥”到“自主导航”的范式跃迁。随着GPT-5.4等具备原生电脑操作能力的大模型发布&#xff0c;以及开源项目OpenClaw在过去一周内的爆发式增长&#xff0c;**AI Agent与传统RPA工具有什么本质区别&#xff1f…...

Claude Code能控制电脑了!开发全程不离终端,全无人值守模式启动

在官方演示中&#xff0c;只甩一个指令过去&#xff0c;AI就自己启动正在开发的应用&#xff0c;自己复现bug&#xff0c;自己修复&#xff0c;自己测试修复效果。 Claude Code上线Computer Use&#xff0c;直接捅破开发效率天花板。 在官方演示中&#xff0c;只甩一个指令过…...

ESP32-S3 开发实战:从问题排查到功能优化

1. ESP32-S3开发环境搭建与常见问题 刚拿到ESP32-S3开发板时&#xff0c;我最先遇到的就是环境配置问题。这里分享几个新手容易踩的坑&#xff1a;首先是开发工具链的选择&#xff0c;官方推荐使用ESP-IDF或Arduino IDE。我建议初学者先用Arduino IDE上手&#xff0c;因为它的库…...

「码动四季·开源同行」go实战案例:如何在 Go 微服务中实现负载均衡?

在上文章中&#xff0c;我们已经介绍了负载均衡的相关概念以及在服务高可用架构中的重要性&#xff0c;也了解了几种主流负载均衡算法的实现。在本文中&#xff0c;我们将在Go微服务实例中具体使用负载均衡技术&#xff0c;并详细说明如何基于服务发现来实现负载均衡的微服务间…...

springboot+vue基于web的校园招聘求职系统

目录同行可拿货,招校园代理 ,本人源头供货商系统功能模块划分关键技术实现数据安全设计扩展性考虑项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作同行可拿货,招校园代理 ,本人源头供货商 系统功能模块划分 后端&#xff08;S…...

如何用QtScrcpy实现跨平台Android设备高效投屏与控制

如何用QtScrcpy实现跨平台Android设备高效投屏与控制 【免费下载链接】QtScrcpy Android实时投屏软件&#xff0c;此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrcpy 在数字化…...

有偿求助 如何使用openclaw 来实现办公自动化

本地部署openclaw 需要让他帮我下载企业微信里的客户聊天记录...

GLM-OCR服务监控与运维指南:使用Prometheus与Grafana搭建看板

GLM-OCR服务监控与运维指南&#xff1a;使用Prometheus与Grafana搭建看板 想象一下&#xff0c;你负责的GLM-OCR服务正在线上稳定运行&#xff0c;突然接到业务方反馈&#xff0c;说图片识别接口响应变慢了。你第一反应是什么&#xff1f;是登录服务器看日志&#xff0c;还是去…...

3个核心技巧:Element Plus效率提升与性能优化指南

3个核心技巧&#xff1a;Element Plus效率提升与性能优化指南 【免费下载链接】element-plus &#x1f389; A Vue.js 3 UI Library made by Element team 项目地址: https://gitcode.com/GitHub_Trending/el/element-plus 副标题&#xff1a;面向初中级开发者的Element…...