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