Lintcode 寻找峰值
来源:互联网 发布:js二维数组固定长度 编辑:程序博客网 时间:2024/06/05 09:43
你给出一个整数数组(size为n),其具有以下特点:
- 相邻位置的数字是不同的
- A[0] < A[1] 并且 A[n - 2] > A[n - 1]
假定P是峰值的位置则满足A[P] > A[P-1]
且A[P] > A[P+1]
,返回数组中任意一个峰值的位置。
注意事项
数组可能包含多个峰值,只需找到其中的任何一个即可
样例
给出数组[1, 2, 1, 3, 4, 5, 7, 6]
返回1
, 即数值 2 所在位置, 或者6
, 即数值 7 所在位置.
挑战
Time complexity O(logN)
分析:既然挑战是说时间复杂度为O(logN),则自然会想到快速查找算法。具体代码如下。
//转自:
class Solution {public: /** * @param A: An integers array. * @return: return any of peek positions. */ int FindPeakNumber(vector<int> A,int first,int last){ int mid; while(first<last){ mid=(first+last)/2; if(A[mid]>A[mid+1]&&A[mid]>A[mid-1]){ return mid; } else if(A[mid]<A[mid-1]) last=mid-1; else if(A[mid]<A[mid+1]) first=mid+1; } } int findPeak(vector<int> A) { // write your code here return FindPeakNumber(A,1,A.size()-2); }};
如有问题请留言。
如有帮助请顶一个,你们的支持是我最大的动力。
文章均可以转载,但请注明文章链接,谢谢。
0 0
- LintCode-寻找峰值
- [LintCode]寻找峰值
- lintcode:寻找峰值
- LintCode 75 寻找峰值
- LintCode : 寻找峰值
- Lintcode 寻找峰值
- LintCode 75 寻找峰值
- 寻找峰值-LintCode
- 【Lintcode】寻找峰值
- lintcode--寻找峰值
- Google/LintCode:M-寻找峰值
- [Lintcode]Find Peak Element 寻找峰值
- 寻找峰值 查看运行结果 ——LintCode
- 寻找峰值
- 寻找峰值
- 寻找峰值
- 寻找峰值
- 寻找峰值
- sqoop从mysql导入hdfs数据过程遇到的问题
- Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
- Power Calculus UVA
- Win7 + Ubuntu 16.04 双系统安装
- 面试题41:有序数组,查找和为s的两个元素and 和为s的连续数字
- Lintcode 寻找峰值
- Spring中的事务操作
- 学习记录
- Linux预处理、编译、汇编、链接和运行的过程(包括一些基本的命令)
- tracert/traceroute原理
- 用C语言写随机数
- wwpdb-世界蛋白质数据库下载
- 好用的网址XIANGJI
- 分析比较B/S和二层C/S和三层C/S指出他们的不同之处和优缺点