website/content.en/ChapterFour/0100~0199/0154.Find-Minimum-in-Rotated-Sorted-Array-II.md
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.
(i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]).
Find the minimum element.
The array may contain duplicates.
Example 1:
Input: [1,3,5]
Output: 1
Example 2:
Input: [2,2,2,0,1]
Output: 0
Note:
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (For example, the array [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2] ). Find the minimum element in it.
Note that the array may contain duplicate elements.
package leetcode
func findMin154(nums []int) int {
low, high := 0, len(nums)-1
for low < high {
if nums[low] < nums[high] {
return nums[low]
}
mid := low + (high-low)>>1
if nums[mid] > nums[low] {
low = mid + 1
} else if nums[mid] == nums[low] {
low++
} else {
high = mid
}
}
return nums[low]
}