package main func findMin(nums []int) int { beg, end := 0, len(nums)-1 for beg < end { mid := beg + (end-beg)/2 // Very important if nums[mid] < nums[end] { end = mid } else if nums[mid] > nums[end] { beg = mid + 1 } else { end-- // If equals, cannot decide in which part, so narrow the range } } return nums[beg] } // func main() { // println(findMin([]int{1, 3, 5}), 1) // println(findMin([]int{2, 2, 2, 0, 1}), 0) // }