1. /**
    2. * @param {number[]} nums
    3. * @return {number}
    4. */
    5. var findPeakElement = function(nums) {
    6. return binarySearchPeak(nums, 0, nums.length - 1)
    7. };
    8. const binarySearchPeak = (nums, left, right) => {
    9. if(right == left) return left
    10. if(left == right - 1) return nums[left] > nums[right] ? left : right
    11. let center = left + parseInt((right - left) / 2)
    12. if(nums[center - 1] < nums[center] && nums[center] > nums[center + 1]) {
    13. return center
    14. } else if(nums[center - 1] > nums[center] && nums[center] > nums[center + 1]) {
    15. return binarySearchPeak(nums, left, center - 1)
    16. } else {
    17. return binarySearchPeak(nums, center + 1, right)
    18. }
    19. }