假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。
请找出其中最小的元素。 注意数组中可能存在重复的元素。
示例 1: 输入: [1,3,5] 输出: 1
示例 2: 输入: [2,2,2,0,1] 输出: 0
class Solution {
public:
int findMin(vector<int>& nums) {
if(nums.size() == 1||nums.front() < nums.back())
return nums.front();
int l = 0, r = nums.size()-1, mid;
while (l <= r)
{
mid = l +((r-l)>>1);
if(nums[r] < nums[mid])
l = mid+1;
else if(nums[r] > nums[mid])
r = mid;
else
r--;
}
return nums[l];
}
};