题目

A peak element is an element that is greater than its neighbors.

Given an input array where num[i] ≠ num[i+1], find a peak element and return its index.

The array may contain multiple peaks, in that case return the index to any one of the peaks is fine.

You may imagine that num[-1] = num[n] = -∞.

For example, in array [1, 2, 3, 1], 3 is a peak element and your function should return the index number 2.

代码

分别用递归和非递归两种方法实现。

非递归版代码:oj测试通过 Runtime: 55 ms

 1 class Solution:
 2     # @param num, a list of integer
 3     # @return an integer
 4     def findPeakElement(self, num):
 5         if len(num) == 1 :
 6             return 0
 7         if len(num) == 2 :
 8             return [0,1][num[0] < num[1]]
 9         start = 0
10         end = len(num)-1
11         while start <= end:
12             if start == end:
13                 return start
14             if start+1 == end:
15                 return [start,end][num[start] < num[end]]
16             mid = (start+end)/2
17             if num[mid] < num[mid-1]:
18                 #start = 0
19                 end = mid -1
20             elif num[mid] < num[mid+1]:
21                 start = mid+1
22                 #end = len(num)-1
23             else:
24                 return mid

递归代码:oj测试通过 Runtime: 51 ms

 1 class Solution:
 2     # @param num, a list of integer
 3     # @return an integer
 4     def find(self,num,start,end):
 5         if start == end :
 6             return start
 7         if end == start + 1:
 8             if num[start] < num[end] :
 9                 return end
10             else:
11                 return start
12         mid = (start+end)/2
13         if num[mid] < num[mid-1] :
14             return self.find(num, start, mid-1)
15         if num[mid] < num[mid+1] :
16             return self.find(num, mid, end)
17         return mid
18
19     def findPeakElement(self, num):
20         if len(num) == 1:
21             return 0
22         return self.find(num, 0, len(num)-1)

思路

二分查找思路升级版。参照如下两篇日志的思路:

http://bookshadow.com/weblog/2014/12/06/leetcode-find-peak-element/

http://blog.csdn.net/u010367506/article/details/41943309

这道题在理解题意上需要注意就是默认这个数组的虚头和虚尾都是负无穷,并且这个数组不存在相等的两个元素,这样就一定能够找到题中描述的peak point.

转载于:https://www.cnblogs.com/xbf9xbf/p/4242949.html

leetcode 【 Find Peak Element 】python 实现相关推荐

  1. LeetCode:Find Peak Element - 寻找一个数组内的顶点

    2019独角兽企业重金招聘Python工程师标准>>> 1.题目名称 Find Peak Element(寻找一个数组内的顶点) 2.题目地址 https://leetcode.co ...

  2. leetcode 162. Find Peak Element | 162. 寻找峰值(二分法找局部最大值)

    题目 https://leetcode.com/problems/find-peak-element/ 题解 2021-7-21 16:28:31 更新版思路: 根据左神在 课上 说的,可以使用二分法 ...

  3. LeetCode刷题之python解法(持续更新)

    1. Two Sum 4行 class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:d = {}fo ...

  4. [LeetCode] 169. Majority Element 多数元素

    Given an array of size n, find the majority element. The majority element is the element that appear ...

  5. 【原创】leetCodeOj --- Find Peak Element 解题报告

    题目地址: https://oj.leetcode.com/problems/find-peak-element/ 题目内容: A peak element is an element that is ...

  6. 75. Find Peak Element 【medium】

    75. Find Peak Element [medium] There is an integer array which has the following features: The numbe ...

  7. 【数组】Find Peak Element

    题目: A peak element is an element that is greater than its neighbors. Given an input array where num[ ...

  8. LeetCode——Kth Largest Element in an Array

    LeetCode--Kth Largest Element in an Array Question Find the kth largest element in an unsorted array ...

  9. LeetCode 其他部分 简单 Python实现

    #LeetCode 其他部分 简单 Python实现 ''' 位1的个数 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量).示例 : 输入: 11 ...

最新文章

  1. [译][python]ImportError:attempted relative import with no known parent package
  2. curl命令的超时时间
  3. MATLAB实战系列(十九)-遗传算法解决TSP(旅行商)问题-应用及解析(文末附MATLAB源码)
  4. MATLAB实战系列(一)-二维路径规划算法续集-图像边缘提取(附代码)
  5. 用qss 来控制qlabel显示字体的位置_Word表格总填不好,这些技巧轻松来拯救
  6. kafka 服务端消费者和生产者的配置
  7. 赠书 | 华为数据底座的整体架构与建设策略
  8. 关于VGG模型文件的存放位置
  9. MTK 10A 消息机制
  10. Eclipse+Maven+Spring+CXF 构建webservice 服务
  11. ios开发--清理缓存
  12. sql2016/2017 卸载安装
  13. AWVS13批量脚本
  14. Kaggle入门 - TMDB 5000 电影推荐数据分析
  15. 使用凤凰在6303C里开启Java软件在后台运行!
  16. 证件照处理:一寸照片换底色
  17. python百分号用法_python中百分号表示什么意思
  18. 计算机solidwork实训报告,solid works学习心得范文
  19. 模数转换 A/D 与数模转换 D/A介绍
  20. js判断手机是苹果(IOS)还是安卓(android)

热门文章

  1. 回顾 | 2018年十大AI新闻 中国继续占据主导优势
  2. 最新发布 | 2018年度第八届吴文俊人工智能科学技术奖获奖名单公示
  3. 为什么 AI 芯片时代必然到来——从TPU开始的几十倍性能之旅
  4. 盘点丨毕业年薪34万,高校人工智能研究哪家强?
  5. 为什么 AI 工程师要懂一点架构?
  6. 全球通信云市场爆发增长,RTC 技术普惠还有多远
  7. 高频一线大厂 Python 面试题:算法+爬虫+数据处理+基础
  8. “我只需一个周末就可以构建出这个应用!”
  9. 使用 ftrace 调试 Linux 内核【转】
  10. 统计学习方法---拉格朗日对偶新性