二分查找——Find Peak Element

来源:互联网 发布:哈密顿圈算法 编辑:程序博客网 时间:2024/06/06 00:27

题目:

给定一个矩阵,找出其中的峰值。矩阵满足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;elseright=mid;}if(data[left] > data[right])return left;elsereturn right;}


0 0
原创粉丝点击