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})) // }