123456789101112131415161718192021222324252627282930 |
- package main
- func findMin(nums []int) int {
- length := len(nums)
- if length == 1 {
- return nums[0]
- }
- beg, end := 0, length-1
- for beg < end {
- if nums[beg] < nums[end] {
- return nums[beg] // No pivot
- }
- mid := (beg + end) / 2
- if nums[mid] > nums[beg] { // Pivot at right
- beg = mid
- } else { // ...At left
- end = mid
- }
- }
- return nums[beg+1]
- }
- // func main() {
- // println(findMin([]int{
- // 4, 5, 6, 7, 0, 1, 2}))
- // println(findMin([]int{
- // 0, 1, 2}))
- // println(findMin([]int{
- // 2, 3, 1}))
- // }
|