class Solution {
public:
int findMin(vector[HTML_REMOVED]& nums) {
if (nums.size() < 1) return -1;
int l = 0;
int r = nums.size()-1;
int mid = (l+r) / 2;
if (nums[l] < nums[r]) return nums[l];
if (nums[mid] == nums[l] && nums[mid] == nums[r]){
while(nums[l] == nums[l+1] && l<mid){
l++;
}
if (l < mid) return nums[l+1];
while( nums[mid] == nums[mid+1] ){
// if (nums[mid+1] < nums[mid] ) return nums[mid+1];
mid++;
}
return nums[mid+1];
}
while(l+1<r && nums[l] >= nums[r]){
if (nums[mid] >= nums[l]) {
l = mid;
}
else if (nums[mid] <= nums[r]){
r = mid;
}
mid = (l+r) / 2;
}
return nums[r];
}
};