西安百度网站建设,北京监理协会培训网站,活动策划方案详细模板,国内建网站知名企业难度#xff1a;中等
题目描述#xff1a;
给定一个长度为 n 的整数 山脉 数组 arr #xff0c;其中的值递增到一个 峰值元素 然后递减。 返回峰值元素的下标。
你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。
示例 1#xff1a;
输入#xff1a;arr [0,1,0]…难度中等
题目描述
给定一个长度为 n 的整数 山脉 数组 arr 其中的值递增到一个 峰值元素 然后递减。 返回峰值元素的下标。
你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。
示例 1
输入arr [0,1,0] 输出1
示例 2
输入arr [0,2,1,0] 输出1
示例 3
输入arr [0,10,5,2] 输出1
解题思路
JavaScript实现
第一种写法
/*** param {number[]} arr* return {number}*/
var peakIndexInMountainArray function (arr) {let left 1let right arr.length - 2while (left right) {let mid left ((right - left) 1)if (arr[mid] arr[mid 1] arr[mid] arr[mid - 1]) {return mid} else if (arr[mid] arr[mid 1] arr[mid] arr[mid - 1]) {right mid - 1} else if (arr[mid] arr[mid 1]) {left mid 1}}
};第二种写法
var peakIndexInMountainArray function (arr) {let left 0let right arr.length - 1while (left right) {let mid Math.floor((right left) / 2 )if (arr[mid] arr[mid 1]) {left mid 1} else {right mid}}return left
};tips:可以依据题目条件利用二分查找适当缩小查找范围