class Solution {
public:
    int minArray(vector<int>& numbers) {
        int left=0,right=numbers.size()-1;
        while(left<right)
        {
            int mid=left+(right-left)/2;
            if(numbers[mid]>numbers[right])
            {
                left=mid+1;
            }
            else if(numbers[mid]<numbers[right])
            {
                right=mid;
            }
            else
            {
                right--;
            }
        }
        return numbers[left];
    }
};

1、right=numbers.size()-1; 如果不减1,会越界

2、mid=left+(right-left)/2;防止数过大时越界

3、判断条件,如果没有重复元素。就不需要第三个判断条件,有就要

posted on 2020-08-02 09:27  黑暗尽头的超音速炬火  阅读(98)  评论(0)    收藏  举报