讨论/《二分查找》 - 寻找旋转排序数组中的最小值 II/
《二分查找》 - 寻找旋转排序数组中的最小值 II
共 1 个回复
class Solution {
public:
    int findMin(vector<int>& nums) {
        int left = 0;
        int right = nums.size()-1;
        while(left<right){
            int mid = left+(right-left)/2;
           
            if(nums[mid]<nums[left]){
                right=mid;
            }
            else if(nums[mid]>nums[left]){
                //cout<<'l'<<left<<endl;
                if(nums[mid]>nums[right])
                    left=mid+1;
                else if(nums[mid]<=nums[right])
                {   
                    return nums[left];
                }     
            }
            else if(nums[mid]==nums[left]){
                if(nums[mid]>nums[right]){
                    left=mid+1;
                }
                else if(nums[mid]<nums[right]){
                    right=mid;
                }
                else if(nums[mid]==nums[right]){
                    right--;
                }
            }
            //cout<<'l'<<left<<endl;
        }
        return nums[left];

    }
};