二叉树法找第一个峰值

峰值表示的是它左边的值和右边的值都比它小,而不是最大值
当然可以通过循环遍历来查找,但是如果他就要让你用二叉树来找呢,比较快速

function funName(arr, addIdx){
  if(arr.length===1){
    return addIdx
  }else if(arr.length===2){
    return (arr[0]>arr[1]?0:1) + addIdx
  }else {
    let startIndex = Math.floor(arr.length/2)
    let leftArr = arr.slice(0, startIndex)
    let rightArr = arr.slice(startIndex+1)
    if(arr[startIndex]>arr[startIndex-1]&&arr[startIndex]>arr[startIndex+1]){
      return startIndex + addIdx
    }else if(arr[startIndex-1]>arr[startIndex]){
      return funName(leftArr,0)
    }else {
      return funName(rightArr, startIndex+1)
    }
  }
}

猜你喜欢

转载自blog.csdn.net/weixin_43443341/article/details/92774254