题解 | #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
};