跳到主要内容

852.山脉数组的峰顶索引

链接:852.山脉数组的峰顶索引
难度:Medium
标签:数组、二分查找
简介:给你由整数组成的山脉数组 arr ,返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i 。

题解 1 - typescript

  • 编辑时间:2021-06-15
  • 执行用时:84ms
  • 内存消耗:40.1MB
  • 编程语言:typescript
  • 解法介绍:搜索最大值。
function peakIndexInMountainArray(arr: number[]): number {
for (let i = 1, l = arr.length; i < l - 1; i++) {
if (arr[i - 1] < arr[i] && arr[i + 1] < arr[i]) return i;
}
return 0;
}

题解 2 - typescript

  • 编辑时间:2021-06-15
  • 执行用时:84ms
  • 内存消耗:40.1MB
  • 编程语言:typescript
  • 解法介绍:二分查找。
function peakIndexInMountainArray(arr: number[]): number {
const len = arr.length;
let left = 1;
let right = len - 2;
let ans = 0;
while (left <= right) {
const mid = ~~((left + right) >> 1);
if (arr[mid] > arr[mid + 1]) {
ans = mid;
right = mid - 1;
} else {
left = mid + 1;
}
}
return ans;
}