代码 二分:
- 中间值如果比
nums[high]大,则最小值,一定在中值与 high 之间,且最小值不可能是现在的中值,所以 low = mid + 1 - 如果小,则一定在 low 与中值之间,且最小值可能是现在的中值,所以 high = mid
- 如果相等,说明现在的区间长度为 1 ,也就是说这个 for 循环已经出去了,所以不可能相等
func findMin(nums []int) int {
low, high := 0, len(nums) - 1
for low < high {
pivot := low + (high - low) / 2
if nums[pivot] < nums[high] {
high = pivot
} else {
low = pivot + 1
}
}
return nums[low]
}