154.go 449 B

123456789101112131415161718192021
  1. package main
  2. func findMin(nums []int) int {
  3. beg, end := 0, len(nums)-1
  4. for beg < end {
  5. mid := beg + (end-beg)/2 // Very important
  6. if nums[mid] < nums[end] {
  7. end = mid
  8. } else if nums[mid] > nums[end] {
  9. beg = mid + 1
  10. } else {
  11. end-- // If equals, cannot decide in which part, so narrow the range
  12. }
  13. }
  14. return nums[beg]
  15. }
  16. // func main() {
  17. // println(findMin([]int{1, 3, 5}), 1)
  18. // println(findMin([]int{2, 2, 2, 0, 1}), 0)
  19. // }