您的位置:首页 > 其它

二分查找——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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: