154. 寻找旋转排序数组中的最小值 2

leetcode

使用二分法可以减少时间复杂度。注意有重复元素,遇到重复元素则可以删除一个,至少留有一个来参与最小值比较。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
func findMin(nums []int) int {
left, right := 0, len(nums) - 1

for left < right {
mid := (left + right) / 2
// 重复元素则去掉最右端的那个
if nums[mid] == nums[right] {
right--
}else if nums[mid] < nums[right] {
right = mid
} else {
left = mid + 1
}
}

return nums[right]
}

154. 寻找旋转排序数组中的最小值 2
https://blog.jerrylee.me/2021/09/2428552c6da3.html
作者
Jerry Lee
发布于
2021年9月20日
许可协议