这一题需要找到峰值,看题目里面的要求,这里的左右边界都是-Infinity,所以对于在左边界上的递减,右边界上的递增,此时的边界都是符合条件的。
这里用二分查找来寻找
看斜率,如果此时mid还有mid+1位置上的数字是递减的,那么我们到左边进行查找,反之到右边进行查找。
var findPeakElement = function (nums) {
let left = 0,
right = nums.length - 1;
// 这里的循环条件不能用 <= ,防止越界
while (left < right) {
let mid = Math.floor((left + right) / 2);
if (nums[mid] > nums[mid + 1]) {
right = mid;
} else {
left = mid + 1;
}
}
return left;
};