题意:给定一个数组,找出一个比相邻两个数大的数
思路:二分搜索数组
- 如果中间的数比后一个数大,那么e更新为m,因为m可能是结果
- 如果中间的数小于=后一个数,那么s更新为m+1,因为结果只能出现在m之后
思想:二分查找
复杂度:时间O(lgn),空间O(1)
class Solution {
public int findPeakElement(int[] nums) {
int n = nums.length;
int s = 0;
int e = n-1;
while(s<e) {
int m = s+(e-s)/2;
if(nums[m] > nums[m+1])
e = m;
else
s = m+1;
}
return s;
}
}
网友评论