您的位置:首页 > 其它

162. Find Peak Element

2016-06-29 05:53 232 查看
这道题基于的特质是,如果是一个递减序列,那么左起第一个数就是peak element,如果是递增数列,那么右侧第一个是

所以可以使用二分搜索,如果一个mid本身并不是peak element,那么它如果比右侧大的话,那么说明左侧(包括它自己)一定有一个最优解,否则右侧(不包括它自己)一定有一个最优解。

public int findPeakElement(int[] nums) {
if(nums.length == 0) {
return -1;
}
int left = 0;
int right = nums.length - 1;
while(left < right) {
int mid = left + (right - left) / 2;
if(nums[mid] > nums[mid + 1]) {
right = mid;
} else {
left = mid + 1;
}
}
return left;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: