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