求数组局部最大值

给定一个无重复元素的数组A[0…N-1],求找到一个该数组的局部最大值。规定:在数组边界外的值无穷小。即:A[0]>A[-1],A[N-1] >A[N]。

显然,遍历一遍可以找到全局最大值,而全局最大值显然是局部最大值。

可否有更快的办法?

算法描述

使用索引left、right分别指向数组首尾。

求中点 mid = ( left + right ) / 2

A[mid]>A[mid+1],丢弃后半段:right=mid

A[mid+1]>A[mid],丢弃前半段:left=mid+1

递归直至left==right

时间复杂度为O(logN)。

Python代码

def local_maximum(li):

if li is None:

return

left = 0

right = len(li) - 1

while left < right:

mid = int((left + right) / 2)

if li[mid] > li[mid + 1]:

right = mid

else:

left = mid + 1

return li[left]

if __name__ == '__main__':

li = [1, 5, 2, 3, 4, 0]

result = local_maximum(li)

print(result)

输出结果:4

以上这篇Python 求数组局部最大值的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持聚米学院。

python 求最大值实例_Python 求数组局部最大值的实例相关推荐

  1. python生成每个月最后一天_python 求下个月的最后一天

    [1]根据当前月求上个月.下个月的最后一天 (1)求当前月最后一天 (2)求前一个月的最后一天 (3)求下一个月的最后一天 学习示例与应用实例,代码如下: #!/usr/bin/python3 #-* ...

  2. python判断数字位数_python求数字位数的方法

    第一种: 利用str()函数将数字转化成字符串,再利用len()函数判断位长. 1 a=Int(raw_input("the number you want type in:") ...

  3. python求众数程序_python求众数问题实例

    本文实例讲述了python求众数问题的方法,是一个比较典型的应用.分享给大家供大家参考.具体如下: 问题描述: 多重集中重数最大的元素称为众数...就是一个可以有重复元素的集合,在这个集合中重复的次数 ...

  4. python求数字平均值_python 求10个数的平均数实例

    python 求10个数的平均数实例 更新时间:2019年12月16日 18:00:02 作者:qq_20076527 今天小编就为大家分享一篇python 求10个数的平均数实例,具有很好的参考价值 ...

  5. python求最大值最小值_Python求可变参数的最大值最小值以及参数个数

    求可变参数的最大值最小值以及参数个数 简介: 首先要做这个题,我们要使用函数来解决,这就要求我们要掌握函数的定义以及函数的调用.函数是一段具有特定功能的.可重用的,用来实现单一,或相关联功能的代码段. ...

  6. python求交点坐标_Python求两个圆的交点坐标或三个圆的交点坐标方法

    计算两个圆的交点 代码如下: # -*- coding: utf-8 -*- import math import numpy as np def insec(p1,r1,p2,r2): x = p1 ...

  7. python计算多边形面积_Python求凸包及多边形面积教程

    一般有两种算法来计算平面上给定n个点的凸包:Graham扫描法(Graham's scan),时间复杂度为O(nlgn):Jarvis步进法(Jarvis march),时间复杂度为O(nh),其中h ...

  8. python牛顿迭代法求根例题_python求根算法

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! scipy官网:https:www.scipy.org这个库是python科学计 ...

  9. python中最小公倍数函数_python求最大公约数和最小公倍数的简单方法

    python怎么求最大公约数和最小公倍数 一.求最大公约数 用辗转相除法求最大公约数的算法如下: 两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数.比如10和 ...

最新文章

  1. Go圣经-学习笔记之defer和异常处理
  2. PowerShell-Exchange:统计每天邮件收发
  3. 不能执行已释放 script 的代码_[漏洞预警]CVE20190708远程桌面代码执行漏洞利用工具已放出...
  4. 工作44:阅读代码1 dictionary
  5. 用友php漏洞,用友CRM注入漏洞(无需登录通杀所有版本)
  6. jquery-nodejs-安装与测试
  7. java 集合操作工具包_java之操作集合的工具类--Collections
  8. hdu 1800 Flying to the Mars
  9. c语言计算结果为1. inf0000,C语言复习题及答案老师给的
  10. MySQL绿色版mysql-5.7.17-winx64简洁安装教程
  11. 有窗体的闭合导线计算程序(C#)
  12. c语言 字符串转浮点型函数
  13. 压铸件孔隙率的检测与等级测定
  14. google服务框架
  15. C# 使用NPIO 导出导出EXECL
  16. 用CSS实现立方体360度旋转
  17. HTML5期末大作业:网页制作代码 网站设计——人电影网站(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 dreamweaver作业静态HTML网页设计模板
  18. 两个摄像头合成一路_两个摄像头怎样用一个显示屏
  19. 互联网创新创业大赛优秀范例_第五十九期创业沙龙——“互联网+”大学生创新创业大赛实践案例...
  20. VK2C22A替代16C22,是段码低功耗LCD液晶显示驱动芯片/段码液晶驱动IC,44SEG*4COM/40*4,高抗干扰.稳定性强

热门文章

  1. collections求和方法_java集合求和最大值最小值示例分享
  2. Python基础(九)--异常
  3. linux java 共享内存_Linux进程间通信之共享内存
  4. kakfa怎么看消息是否堆积_纯种哈士奇多少钱一只,怎么看是否是纯种哈士奇
  5. AcWing之二维数组的查找
  6. 我的BERT!改改字典,让BERT安全提速不掉分(已开源)
  7. 别让数据坑了你!用置信学习找出错误标注(附开源实现)
  8. Spring Cloud实战小贴士:健康检查
  9. Shield——开源的移动端页面模块化开发框架
  10. Android-Note