题解 | #旋转数组的最小数字#
旋转数组的最小数字
https://www.nowcoder.com/practice/9f3231a991af4f55b95579b44b7a01ba
package main
/**
*
* @param rotateArray int整型一维数组
* @return int整型
*/
func minNumberInRotateArray( rotateArray []int ) int {
nums := rotateArray
if len(nums) == 0 {
return -1
}
if len(nums) == 1 {
return nums[0]
}
left := 0
right := len(nums) - 1
for left < right {
mid := left + (right-left)/2
//中间数大于右边数,最小值在右边
if nums[mid] > nums[right] {
left = mid + 1
} else if nums[mid] < nums[right] {
//中间数小于右边数,最小值在左边
right = mid
} else {
//相等时,缩减范围
right--
}
}
return nums[left]
}
