// leetcode里似乎见过这个
// 和BM19 寻找峰值 是相通的
class Solution {
public:

    // 
    int minNumberInRotateArray(vector<int> rotateArray) {

        int n = rotateArray.size();

        int left = 0, right = n-1;

        while(left<right)
        {
            int mid = (right+left)/2;
            
            if(rotateArray[mid]>rotateArray[right]) // 都跟最右侧指针的值比较 
            {
                left = mid+1; // mid 位于前面 最小值一定在右侧
            }
            else if (rotateArray[mid]<rotateArray[right])
            {
                right = mid; // 最小值可能是它 也可能左侧
            }
            else // 注意 相邻两个元素可能是相等的
            {
                // [mid] == [n-1]
                right--; // 两者都有可能

            }
        }

        return rotateArray[right];

        
    }
};