162. 寻找峰值
解题思路
- 改造二分查找算法
- 如果nums[mid] > nums[mid + 1] 说明左侧存在较大的峰值
- 如果nums[mid] <= nums[mid + 1] 说明右侧存在较大的峰值
java
class Solution {
public int findPeakElement(int[] nums) {
// 原始数组不是有序
// 改造二分查找算法
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 if(nums[mid] <= nums[mid + 1]){
// 说明右侧存在较大峰值
left = mid + 1;
}
}
return left;
}
}