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