题解 | #21. 旋转数组的最小数字#

旋转数组的最小数字

http://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba

二分

注意:

1.比较的对象是rotateArray[right],我开始用的是left,为什么不行呢,我也不知道(尬住)

2.[1,0,1,1,1]这个用例我过不去,因为相等的时候要right--,我还是不太知道为什么(绷不住了😅)

function minNumberInRotateArray(rotateArray)
{
  let left = 0, right = rotateArray.length-1;
  while(left < right){
    let mid = Math.floor( (left + right)/2 );
    if(rotateArray[mid] < rotateArray[right]){
      right = mid;
    }else if(rotateArray[mid] > rotateArray[right]){
      left = mid+1;
    }else{
      right--;
    }
  }
  return rotateArray[left];
}
module.exports = {
    minNumberInRotateArray : minNumberInRotateArray
};
全部评论
你差点把我笑死。参照官方的二分思路,遇到和你一样的问题哈哈哈
点赞 回复 分享
发布于 2022-06-06 21:04
我也过不去hhh,求大神解答
点赞 回复 分享
发布于 2022-07-31 20:18
我左边也过不去,然后看题发现这个旋转数组第一个数永远大于等于最后一个数,那判断就不准确了。相等的时候,不确定旋转点在中间点在哪,但肯定最小值在右边的左侧
点赞 回复 分享
发布于 2023-07-26 16:05 湖北

相关推荐

10-15 16:27
门头沟学院 C++
LeoMoon:建议问一下是不是你给他付钱😅😅
点赞 评论 收藏
分享
球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务