山峰数组的顶部

简介: 山峰数组的顶部

1 问题

给定由整数组成的山峰数组 arr ,返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i ,即山峰顶部。

示例 1:

输入:arr = [0,1,0]

输出:1

示例 2:

输入:arr = [1,3,5,4,2]

输出:2

2 方法

  1. 循环遍历
    题目给的是一个山峰数组,所以是先递增再递减
    思路一:
    对数组进行遍历,如果遍历到的那个元素比下一个元素大,则这个元素。

  2. 二分法查找
    在山峰数组中,因为是先递增再递减,要使用二分查找方法的话
    假设满足题目要求所要得元素下标为mid,那么就满足在下标i<mid时,
    这个时候arr[i]<arr[i+1]是一直成立的,相反,在满足下标i>mid时,arr[i]>arr[i+1]也是一直成立的。
    这样就有一个思路:
    定义左边left=0,右边right=len(arr)-2,ans = 0。
    这样定义是防止特殊数组的出现,如只有三个数的数组,这个时候就取中间 。mid = (left+right)/2
    如果arr[mid]>arr[mid+1],则定义ans = mid,此时right向左边移动一位,如果arr[mid]<arr[mid+1],则left向左边移动一位。
    代码如下:

  3. 第三种:使用python内部函数

直接使用max(arr)求出最大值,再arr.index(max(arr))直接求出最大值下标。

           山峰数组代码

//循环遍历查找最大值
arr = [12, 26, 48, 49, 56, 79, 50, 44, 32, 11]
n = len(arr)
ans = 0
for i in range(n):
if arr[i] > arr[i + 1]:
       ans = i
break
print
(ans)
//使用二分法查找
arr = [12, 26, 48, 49, 56, 79, 50, 44, 32, 11]
n = len(arr)
left, right, ans = 1, n - 2, 0

while left <= right:
   mid = (left + right) // 2
if arr[mid] > arr[mid + 1]:
       ans = mid
       right = mid - 1
else:
       left = mid + 1
print(ans)
//使用python内部函数直接求
arr = [12, 26, 48, 49, 56, 79, 50, 44, 32, 11]
print(arr.index(max(arr)))

4 结语

针对山峰数组问题,提出了循环遍历,二分法,python内部函数等方法解决问题,对于二分法要注意的是,每一次进行二分法查找之前,先对定义的指针进行移动。




目录
相关文章
|
Web App开发 域名解析 缓存
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
本文我们主要为大家介绍在 Ubuntu 20.04 上安装 Node.js 和 npm 的三种不同的方式。
162441 7
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
|
应用服务中间件 网络安全 nginx
Nginx配置WebSocket 【支持wss与ws连接】
Nginx配置WebSocket 【支持wss与ws连接】
9487 1
|
6月前
|
人工智能 运维 安全
函数计算支持热门 MCP Server 一键部署
MCP(Model Context Protocol)自2024年发布以来,逐渐成为AI开发领域的实施标准。OpenAI宣布其Agent SDK支持MCP协议,进一步推动了其普及。然而,本地部署的MCP Server因效率低、扩展性差等问题,难以满足复杂生产需求。云上托管成为趋势,函数计算(FC)作为Serverless算力代表,提供一键托管开源MCP Server的能力,解决传统托管痛点,如成本高、弹性差、扩展复杂等。通过CAP平台,用户可快速部署多种热门MCP Server,体验高效灵活的AI应用开发与交互方式。
3263 10
|
7月前
|
人工智能 搜索推荐 数据可视化
Manus:或将成为AI Agent领域的标杆
随着人工智能技术的飞速发展,AI Agent(智能体)作为人工智能领域的重要分支,正逐渐从概念走向现实,并在各行各业展现出巨大的应用潜力。在众多AI Agent产品中,Manus以其独特的技术优势和市场表现,有望成为该领域的标杆。作为资深AI工程师,本文将深入探讨Manus的背景知识、主要业务场景、底层原理、功能的优缺点,并尝试使用Java搭建一个属于自己的Manus助手,以期为AI Agent技术的发展和应用提供参考。
12721 19
|
11月前
|
人工智能 自然语言处理 并行计算
探索大模型部署:基于 VLLM 和 ModelScope 与 Qwen2.5 在双 32G VGPU 上的实践之旅
本文介绍了使用 `VLLM` 和 `ModelScope` 部署 `Qwen2.5` 大模型的实践过程,包括环境搭建、模型下载和在双 32G VGPU 上的成功部署,展现了高性能计算与大模型结合的强大力量。
2614 3
|
NoSQL 关系型数据库 MySQL
排行榜系统设计:高并发场景下的最佳实践
本文由技术分享者小米带来,详细介绍了如何设计一个高效、稳定且易扩展的排行榜系统。内容涵盖项目背景、技术选型、数据结构设计、基本操作实现、分页显示、持久化与数据恢复,以及高并发下的性能优化策略。通过Redis与MySQL的结合,确保了排行榜的实时性和可靠性。适合对排行榜设计感兴趣的技术人员参考学习。
1595 7
排行榜系统设计:高并发场景下的最佳实践
|
存储 安全 Python
如何在Python中实现一个单例模式,确保在多线程环境中也是安全的?
【2月更文挑战第5天】【2月更文挑战第11篇】如何在Python中实现一个单例模式,确保在多线程环境中也是安全的?
466 1
|
存储 机器学习/深度学习 人工智能
深入浅出 AI 智能体(AI Agent)|技术干货
随着人工智能技术的发展,智能体(AI Agents)逐渐成为人与大模型交互的主要方式。智能体能执行任务、解决问题,并提供个性化服务。其关键组成部分包括规划、记忆和工具使用,使交互更加高效、自然。智能体的应用涵盖专业领域问答、资讯整理、角色扮演等场景,极大地提升了用户体验与工作效率。借助智能体开发平台,用户可以轻松打造定制化AI应用,推动AI技术在各领域的广泛应用与深度融合。
25075 1
|
Linux 网络安全 开发工具
Linux取消秘钥登录,改为用户名密码登录
记录下刚刚取消秘钥登录,改为用户名密码登录。 一般在阿里云购买服务器后,可能未点自定义密码登录,使用了秘钥。又不想重置系统盘 下面操作可以参考下 一、修改 vim /etc/ssh/sshd_config 去掉PermitRootLogin yes 前面的#注释 二、 修改 PasswordAut...
7887 1