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