二分查找——Find Peak Element
2016-07-22 09:19
239 查看
题目:
给定一个矩阵,找出其中的峰值。矩阵满足num[i]!=num[i+1],矩阵中可能有多个峰值,返回其中之一即可(若要求出所有,则不能使用二分查找法)。另外,you may imagine that num[-1] == num
== 负无穷。
例如:矩阵[1,2,3,1],返回3的下标2。
矩阵[1,2,3,4,5],返回5的下标4。
public int findPeak(int[] data)
{
if(data == null||data.length == 0)
return -1;
int left=0;
int right=data.length-1;
while(left < right-1)
{
int mid=left+(right-left)/2;//因为left < right-1所以mid的左右两边一定有数
if(data[mid] > data[mid-1]&&data[mid] > data[mid+1])
return mid;
else if(data[mid] < data[mid+1])
left=mid;
else
right=mid;
}
if(data[left] > data[right])
return left;
else
return right;
}
给定一个矩阵,找出其中的峰值。矩阵满足num[i]!=num[i+1],矩阵中可能有多个峰值,返回其中之一即可(若要求出所有,则不能使用二分查找法)。另外,you may imagine that num[-1] == num
== 负无穷。
例如:矩阵[1,2,3,1],返回3的下标2。
矩阵[1,2,3,4,5],返回5的下标4。
public int findPeak(int[] data)
{
if(data == null||data.length == 0)
return -1;
int left=0;
int right=data.length-1;
while(left < right-1)
{
int mid=left+(right-left)/2;//因为left < right-1所以mid的左右两边一定有数
if(data[mid] > data[mid-1]&&data[mid] > data[mid+1])
return mid;
else if(data[mid] < data[mid+1])
left=mid;
else
right=mid;
}
if(data[left] > data[right])
return left;
else
return right;
}
相关文章推荐
- CodeForces 1B Spreadsheets
- 获取Android代码测试覆盖率详解
- 实时监控系统设计
- 人人都看得懂的正则表达式教程
- 在eclipse中使用android tools 打包出现的错误的解决方法
- pat 1115 Counting Nodes in a BST (30)
- 怎样在Linux上录制你的终端操作及回放
- Android studio乱码O
- Android 6.0 AMS分析的第一条线:SystemServer中的AMS的调用轨迹
- Ubuntu 内存泄漏检测工具Valgrind的安装
- Unity3D-Roll-a-ball(1)
- 隐蔽的笛卡尔集
- 人见人爱A+B hd 2033
- hadoop大数据与hadoop云计算
- jQuery 自定义下拉框(DropDown)附源码下载
- Android开发中各分辨率图片的参考尺寸
- C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll调用、动态调用
- Javascript基础学习笔记(菜鸟必看篇)
- Ubuntu 下Qt SDK的下载及安装
- CodeForces 15D Map (RMQ)