public int findMin(int[] num) {
    if(num == null || num.length==0)
        return 0;
    int l = 0;
    int r = num.length-1;
    int min = num[0];
    while(l<r-1)
    {
        int m = (l+r)/2;
        if(num[l]<num[m])
        {
            min = Math.min(num[l],min);
            l = m+1;
        }
        else if(num[l]>num[m])
        {
            min = Math.min(num[m],min);
            r = m-1;
        }
        else
        {
            l++;
        }
    }
    min = Math.min(num[r],min);
    min = Math.min(num[l],min);
    return min;
}在面试中这种问题还是比较常见的,现在的趋势是面试官倾向于从一个问题出发,然后follow up问一些扩展的问题,而且这个题目涉及到了复杂度的改变,所以面试中确实是一个好题,自然也更有可能出现哈。Find Minimum in Rotated Sorted Array II -- LeetCode
原文:http://blog.csdn.net/linhuanmars/article/details/40449299