function minNumberInRotateArray(rotateArray, len = rotateArray.length)
{
const minIdx = binary(rotateArray,0,len - 1);
return rotateArray[minIdx]
}
function binary(arr,left,right){
const mid = Math.floor((left+right)/2);
console.log('mid',left,right,mid,arr[mid])
if(left === right){
return mid;
}
// 末尾的旋转数组内部的值小于原数组的值
if(arr[mid] > arr[right]){
// 如果mid大于right边界则交界处在右边
// 升区间+1,逐渐逼近降区间
left = mid + 1;
}else if(arr[mid] < arr[right]){
// 如果mid小于left则交界处在左边
// 降区间有可能是峰值,但是不一定,要看看和left相等不
right = mid;
// 要考虑等于的情况若是区间中点值等于区间右界值,则是不容易分辨最小数字在哪半个区间,比如[1,1,1,0,1],应该逐个缩减右界;
}else if(arr[mid] === arr[right]){
right --;
}
return binary(arr,left,right)
}
module.exports = {
minNumberInRotateArray : minNumberInRotateArray
};