题目:
给定一个矩阵,找出其中的峰值。矩阵满足num[i]!=num[i+1],矩阵中可能有多个峰值,返回其中之一即可(若要求出所有,则不能使用二分查找法)。另外,you may imagine that num[-1] == num[n] == 负无穷。
例如:矩阵[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;
}