/**
* @param {number[]} nums
* @return {number}
*/
var findPeakElement = function(nums) {
return binarySearchPeak(nums, 0, nums.length - 1)
};
const binarySearchPeak = (nums, left, right) => {
if(right == left) return left
if(left == right - 1) return nums[left] > nums[right] ? left : right
let center = left + parseInt((right - left) / 2)
if(nums[center - 1] < nums[center] && nums[center] > nums[center + 1]) {
return center
} else if(nums[center - 1] > nums[center] && nums[center] > nums[center + 1]) {
return binarySearchPeak(nums, left, center - 1)
} else {
return binarySearchPeak(nums, center + 1, right)
}
}