// 时间复杂度o(logn),空间复杂度o(1)
// 思想:上坡一定有波峰,下坡不一定有波峰,但是可能找不到,一直向下走的。
// 因为,nums[-1] = nums[n] = -∞
// 最左边和最右边为无穷小,当任意一个位置i上的值小于相邻i+1时,则左边必然存在峰值
function findPeakElement( nums,len = nums.length ) {
    let peakIndx = -1;
    peakIndx = binarySearch(0,len - 1);
    function binarySearch(left,right){
        const mid = Math.floor((left + right)/2); 
        if(left === right){
            return mid;
        }
        //判断mid右边是不是向上区间
        if(nums[mid+1] > nums[mid]) {
            //右边是右向上区间,
            // mid不可能是峰值 所以+1,继续+1收缩找到上区间的分界线和下区间
            left = mid + 1;
        }else{
            // 如果右边是向下区间就往左收缩
            //不-1是因为mid可能是峰值,
//             收缩之后如果left === right就是mid就是峰值
            right = mid;
        }
        return binarySearch(left,right);
    }
    return peakIndx;
}
module.exports = {
    findPeakElement : findPeakElement
};