[LintCode]寻找峰值
来源:互联网 发布:网络预约系统 编辑:程序博客网 时间:2024/06/05 08:51
题目:
你给出一个整数数组(size为n),其具有以下特点:
- 相邻位置的数字是不同的
- A[0] < A[1] 并且 A[n - 2] > A[n - 1]
假定P是峰值的位置则满足A[P] > A[P-1]
且A[P] > A[P+1]
,返回数组中任意一个峰值的位置。
Yes
样例
给出数组[1, 2, 1, 3, 4, 5, 7, 6]
返回1
, 即数值 2 所在位置, 或者6
, 即数值 7 所在位置.
注意
解答:直接查找太简单,时间复杂度为O(n)。可用二分查找,时间复杂度为O(lgn)数组可能包含多个峰值,只需找到其中的任何一个即可
代码如下:
public int findPeak(int[] A) { int begin = 0; int end = A.length - 1; while(begin < end) { int mid = begin + (end - begin)/2; if(mid == 0) return 1; if(mid == A.length - 1) return mid - 1; if(A[mid] > A[mid - 1] && A[mid] > A[mid + 1]) return mid; else if(A[mid] < A[mid - 1]) end = mid - 1; else begin = mid + 1; } return begin; }
0 0
- LintCode-寻找峰值
- [LintCode]寻找峰值
- lintcode:寻找峰值
- LintCode 75 寻找峰值
- LintCode : 寻找峰值
- Lintcode 寻找峰值
- LintCode 75 寻找峰值
- 寻找峰值-LintCode
- 【Lintcode】寻找峰值
- lintcode--寻找峰值
- Google/LintCode:M-寻找峰值
- [Lintcode]Find Peak Element 寻找峰值
- 寻找峰值 查看运行结果 ——LintCode
- 寻找峰值
- 寻找峰值
- 寻找峰值
- 寻找峰值
- 寻找峰值
- Date
- DWR3实现服务器端向客户端精确推送消息
- 第三周项目1-顺序表的基本运算
- 机器学习中的相似性度量
- 第三周项目2-建设“顺序表”算法库
- [LintCode]寻找峰值
- 第3周项目1 顺序表的基本运算
- 第四周上机实践项目1——建立单链表
- spring mvc controller间跳转 重定向 传参
- Android Scrollview不能定位到顶部的问题?
- 面向对象与面向过程的区别
- c++学习——顺序容器
- dos 通过ftp连接到vsftpd 显示乱码解决方法
- 程序编程的一点体会