派森 #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)
代码解析:
nums = []:定义一个空列表,用于存储输入的数字列表。s = input().split(' '):通过input()函数获取用户输入的一行字符串,并使用split(' ')方法将其拆分成一个字符串列表。默认情况下,split()方法使用空格作为分隔符来拆分字符串。for x in s::对字符串列表s进行迭代,将迭代的值依次赋给变量x。nums.append(float(x)):将字符串x转换为浮点数类型,并将其添加到nums列表中。left, right = 0, len(nums) - 1:同时为变量left和right赋初值。left表示当前搜索范围的左边界,初始为0;right表示当前搜索范围的右边界,初始为列表的最后一个索引。while left < right::当left小于right时,执行循环体内的代码。这表示搜索范围还没有缩小到只有一个元素。mid = (left + right) // 2:计算当前搜索范围的中间位置的索引。使用整数除法(//)确保mid是整数。if nums[mid] > nums[mid + 1]::比较mid位置上的元素值与其右边相邻元素的值。如果mid位置上的元素值大于右边相邻元素的值,说明峰值在mid的左边,将搜索范围缩小到[left, mid]。right = mid:将搜索范围的右边界更新为mid位置,因为nums[mid]已经不可能是峰值,可以排除掉。else::如果mid位置上的元素值小于或等于右边相邻元素的值,说明峰值在mid的右边,将搜索范围缩小到[mid+1, right]。left = mid + 1:将搜索范围的左边界更新为mid + 1,因为mid位置上的元素值已经被排除。print(left):打印最终得到的峰值的索引,即left的值。利用了二分查找的思想来寻找峰值。通过不断缩小搜索范围,每次将搜索范围减半,直到找到峰值所在的位置。
相关文章:
派森 #P122. 峰值查找
描述 给定一个长度为n的列表nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可。 (1)峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于; &…...
基础网络详解4--HTTP CookieSession 思考
一、cookie技术思考 一台多用户浏览器发起了三笔请求,将某款产品放入购物车中,A一次,选择了篮球;B两次,第一次选了足球,第二次选了钢笔。如何确认选择篮球、足球、钢笔的请求属于谁呢?如果不确认…...
14. 利用Canvas自制时钟组件
1. 说明 在自定义时钟组件时,使用到的基本控件主要是Canvas,在绘制相关元素时有两种方式:一种时在同一个canvas中绘制所有的部件元素,这样需要不断的对画笔和画布的属性进行保存和恢复,容易混乱;另一种就是…...
微信小程序使用云存储和Markdown开发页面
最近想在一个小程序里加入一个使用指南的页面,考虑到数据存储和减少页面的开发工作量,决定尝试在云存储里上传Markdown文件,微信小程序端负责解析和渲染。小程序端使用到一个库Towxml。 Towxml Towxml是一个可将HTML、Markdown转为微信小程…...
【C++】运算符重载 | 赋值运算符重载
Ⅰ. 运算符重载 引入 ❓什么叫运算符重载? 就是:运用函数,将现有的运算符重新定义,使其能满足各种自定义类型的运算。 回想一下,我们以前运算的对象是不是都是int、char这种内置类型? 那我们自定义的“…...
Python学习 -- 类对象从创建到常用函数
在Python编程中,类是一种强大的工具,用于创建具有共同属性和行为的对象。本篇博客将详细介绍Python中类和对象的创建,类的属性和方法,以及一些常用的类函数,通过丰富的代码例子来帮助读者深入理解。 一、类和对象的创…...
数组分割(2023省蓝桥杯)n种讨论 JAVA
目录 1、题目描述:2、前言:3、动态规划(bug):3、递归 剪枝(超时):4、数学(正解): 1、题目描述: 小蓝有一个长度为 N 的数组 A [A0, A1,…, AN−…...
很好的启用window10专业版系统自带的远程桌面
启用window10专业版系统自带的远程桌面 文章目录 启用window10专业版系统自带的远程桌面前言1.找到远程桌面的开关2. 找到“应用”项目3. 打开需要远程操作的电脑远程桌面功能 总结 前言 Windows操作系统作为应用最广泛的个人电脑操作系统,在我们身边几乎随处可见。…...
TCP定制协议,序列化和反序列化
目录 前言 1.理解协议 2.网络版本计算器 2.1设计思路 2.2接口设计 2.3代码实现: 2.4编译测试 总结 前言 在之前的文章中,我们说TCP是面向字节流的,但是可能对于面向字节流这个概念,其实并不理解的,今天我们要介…...
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种设计模式攻关
👍一、创建者模式 🔖1.1、单例模式 单例模式(Singleton Pattern),用于确保一个类只有一个实例,并提供全局访问点。 在某些情况下,我们需要确保一个类只能有一个实例,比如数据库连接…...
【jsthreeJS】入门three,并实现3D汽车展示厅,附带全码
首先放个最终效果图: 三维(3D)概念: 三维(3D)是一个描述物体在三个空间坐标轴上的位置和形态的概念。相比于二维(2D)只有长度和宽度的平面,三维增加了高度或深度这一维度…...
unity将结构体/列表与json字符串相互转化
编写Unity程序时,面对大量需要传输或者保存的数据时,为了避免编写重复的代码,故采用NewtonJson插件来将定义好的结构体以及列表等转为json字符串来进行保存和传输。 具体代码如下: using System; using System.IO; using Newtons…...
【Vue】vue2项目使用swiper轮播图2023年8月21日实战保姆级教程
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、npm 下载swiper二、使用步骤1.引入库声明变量2.编写页面3.执行js 总结 前言 swiper轮播图官网 参考文章,最好先看完他的介绍,再看…...
【算法日志】贪心算法刷题:单调递增数列,贪心算法总结(day32)
代码随想录刷题60Day 目录 前言 单调递增数列 贪心算法总结 前言 今天是贪心算法刷题的最后一天,今天本来是打算刷两道题,其中的一道hard题做了好久都没有做出来(主要思路错了)。然后再总结一下。 单调递增数列 int monotoneIncreasingDigits(int n…...
MATLAB算法实战应用案例精讲-【深度学习】模型压缩
目录 模型压缩概述 1. 为什么需要模型压缩 2. 模型压缩的基本方法 Patient-KD 1. Patient-KD 简介...
Matlab使用
Matlab使用 界面介绍 新建脚本:实际上就是新建一个新建后缀为.m的文件 新建编辑器:ctrlN 打开:打开最近文件,以找到最近写过的文件 点击路径,切换当前文件夹 预设:定制习惯用的界面 常见简单指令 ;…...
BladeX多数据源配置
启用多租户数据库隔离,会默认关闭mybatis-plus多数据源插件的启动,从而使用自定义的数据源识别 若不需要租户数据库隔离只需要字段隔离,而又需要用到多数据源的情况,需要前往LauncherService单独配置 数据源切换失败 详情请看说明…...
go里面关于超时的设计
设想一下你在接收源源不断的数据,如果有700ms没有收到,则认为是一个超时,需要做出处理。 逻辑上可以设计一个grouting,里面放一个通道,每收到一条数据进行相应处理。通道中夹杂一个timer定时器的处理,若通道在700ms内…...
Qt下使用ModbusTcp通信协议进行PLC线圈/保持寄存器的读写(32位有符号数)
文章目录 前言一、引入Modbus模块二、Modbus设备的连接三、各寄存器数据的读取四、各寄存器数据的写入五、示例完整代码总结 前言 本文主要讲述了使用Qt的Modbus模块来进行ModbusTcp的通信,实现对PLC的线圈寄存器和保持寄存器的读写,基于TCP/IP的Modbus…...
Proxima向量检索库:硬件优化与量化技术实战解析
1. 项目概述:一个为现代开发者打造的“近邻”代码库 最近在GitHub上看到一个挺有意思的项目,叫“Zen4-bit/Proxima”。乍一看这个标题,可能会有点摸不着头脑。“Zen4-bit”像是一个用户名或者某种架构的代号,而“Proxima”则让人联…...
GitHub仓库自动化同步工具xpull:原理、配置与实战应用
1. 项目概述:一个被低估的GitHub数据同步利器 如果你经常在GitHub上管理多个仓库,或者需要将某个仓库的特定分支、标签甚至整个提交历史同步到另一个仓库,那么你很可能经历过手动操作的繁琐。无论是为了备份、镜像、还是将上游的更新合并到自…...
pgwatch2存储后端对比:PostgreSQL vs InfluxDB vs Prometheus – 选择最适合你的监控方案
pgwatch2存储后端对比:PostgreSQL vs InfluxDB vs Prometheus – 选择最适合你的监控方案 【免费下载链接】pgwatch2 PostgreSQL metrics monitor/dashboard 项目地址: https://gitcode.com/gh_mirrors/pg/pgwatch2 pgwatch2是一款灵活的PostgreSQL指标监控和…...
FPGA开发板GT远端环回测试:原理、配置与调试实战指南
1. 项目概述:为什么我们需要在开发板上做GT远端环回测试?如果你是一位硬件工程师或者FPGA开发者,最近正在调试一块带有高速串行收发器(比如Xilinx的GTX/GTH/GTY,或者Intel的Transceiver)的开发板࿰…...
Go语言WebSocket服务器tocket:轻量级高性能实时通信方案
1. 项目概述:一个轻量级、高性能的WebSocket服务器 最近在折腾一个需要实时双向通信的物联网项目,传统的HTTP轮询方案在延迟和服务器开销上都不太理想,WebSocket自然就成了首选。在技术选型时,我习惯性地会去GitHub上搜罗一番&…...
Clawless框架:构建合规网页数据抓取系统的设计哲学与实践指南
1. 项目概述与核心价值最近在GitHub上闲逛,发现了一个名为“Clawless”的项目,作者是HainanZhao。这个项目名挺有意思,“Clawless”直译是“无爪”,听起来像是一个温和无害的工具。点进去一看,发现它是一个用于自动化处…...
四个数字,能组成多少个互不重复且无重复数字的三位数
题目:有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?思路:用三层嵌套循环让百位、十位、个位各自在 1~4 上枚举(共 444 种组合)。printf 把三个循环变…...
用Adafruit MONSTER M4SK改造Boglin玩具:赋予经典怪物互动电子眼
1. 项目概述:当经典玩具遇上开源硬件如果你和我一样,对上世纪80年代那些造型古怪、充满想象力的玩具情有独钟,同时又是个喜欢动手折腾的创客,那么这个项目绝对能让你兴奋起来。今天我们要聊的,是如何让一个几乎被遗忘的…...
模块四-数据转换与操作——28. 分组变换与过滤
28. 分组变换与过滤 1. 概述 除了聚合(agg)之外,groupby 还支持**变换(transform)和过滤(filter)**操作。transform 用于在组内进行元素级运算,filter 用于根据组属性筛选组。 impor…...
基于MCP协议构建AI助手本地工具服务器:从原理到实战
1. 项目概述与核心价值最近在折腾AI Agent的开发,发现一个挺有意思的项目,叫kirill-markin/example-mcp-server。这名字听起来平平无奇,但如果你正在研究如何让ChatGPT、Claude这类大模型助手变得更“能干”,能直接操作你电脑上的…...
