思路:二分法三种情况
1.如果mid>right,说明mid-right之间存在被旋转数组,left = mid+1
2.如果mid<right,说明mid右侧整体有序,最小的定在mid(包含)及其左边
3.如果mid=right,无法判断,只能缩小范围right --;

import java.util.ArrayList;
public class Solution {
    public int minNumberInRotateArray(int [] array) {
        int left = 0;
        int right = array.length - 1;
        while(left < right){
            int mid = left + (right - left) / 2;
            //说明mid-right为被旋转的部分,最小的应该在mid之前可能包含mid 561234
            if(array[mid] < array[right]){
                right = mid;
            }
            else if(array[mid] > array[right]){
                left = mid + 1;
            }
            else{
                right = right - 1;
            }
        }
        return array[left];
    }
}