153.go 527 B

123456789101112131415161718192021222324252627282930
  1. package main
  2. func findMin(nums []int) int {
  3. length := len(nums)
  4. if length == 1 {
  5. return nums[0]
  6. }
  7. beg, end := 0, length-1
  8. for beg < end {
  9. if nums[beg] < nums[end] {
  10. return nums[beg] // No pivot
  11. }
  12. mid := (beg + end) / 2
  13. if nums[mid] > nums[beg] { // Pivot at right
  14. beg = mid
  15. } else { // ...At left
  16. end = mid
  17. }
  18. }
  19. return nums[beg+1]
  20. }
  21. // func main() {
  22. // println(findMin([]int{
  23. // 4, 5, 6, 7, 0, 1, 2}))
  24. // println(findMin([]int{
  25. // 0, 1, 2}))
  26. // println(findMin([]int{
  27. // 2, 3, 1}))
  28. // }