u
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
package top100liked
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/?envType=study-plan-v2&envId=top-100-liked
|
||||
|
||||
func findMin(nums []int) int {
|
||||
if len(nums) == 1 {
|
||||
return nums[0]
|
||||
}
|
||||
if nums[0] < nums[len(nums)-1] {
|
||||
return nums[0]
|
||||
}
|
||||
|
||||
start := 0
|
||||
end := len(nums) - 1
|
||||
for start <= end {
|
||||
mid := start + (end-start)/2
|
||||
if mid >= 1 && nums[mid-1] > nums[mid] && mid < len(nums)-1 && nums[mid] < nums[mid+1] {
|
||||
return nums[mid]
|
||||
}
|
||||
if nums[mid] > nums[end] {
|
||||
// 最小值在右侧
|
||||
start = mid + 1
|
||||
} else {
|
||||
// 最小值在左侧
|
||||
end = mid - 1
|
||||
}
|
||||
}
|
||||
if nums[start] > nums[end] {
|
||||
return nums[end]
|
||||
}
|
||||
return nums[start]
|
||||
}
|
||||
|
||||
func Test(t *testing.T) {
|
||||
// fmt.Println(findMin([]int{3, 4, 5, 1, 2}))
|
||||
// fmt.Println(findMin([]int{3, 1, 2}))
|
||||
fmt.Println(findMin([]int{2, 1}))
|
||||
}
|
||||
Reference in New Issue
Block a user