using System;
using System.Collections.Generic;


class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @return int整型
     */
    public int minNumberInRotateArray (List<int> nums) {
        int i = 0;
        int j = nums.Count - 1;
        return MinNumber(i, j, nums);
    }
    public int MinNumber(int i, int j, List<int> numbers){
        if(numbers[i] < numbers[j]) return numbers[i];
        while(i < j){
            int mid = (i + j) >> 1;
            if(numbers[mid] < numbers[i]) j = mid;
            else if(numbers[mid] > numbers[j]) i = mid + 1;
            else{
                int left = MinNumber(i, mid, numbers);
                int right = MinNumber(mid + 1, j, numbers);
                if(left <= right) return left;
                else return right; 
            }
        }
        return numbers[j];
    }
}