示例:
思路:
峰值一定会在结果较大的一侧出现
代码实现:
class Solution {
public int findPeakElement(int[] nums) {
//定义首尾
int left = 0;
int right = nums.length - 1;
while(left < right){
//二分法
int mid = left + (right - left)/2;
//在mid左侧
if(nums[mid] > nums[mid + 1]){
right = mid;
//在mid右侧
}else{
left = mid + 1;
}
}
return left;
}
}
时间复杂度:O( logn )
空间复杂度:O( 1 )