153. 寻找旋转排序数组中的最小值

class Solution {
    //nums[mid]要么在较大一半
    //要么在较小一半
    //注意范围缩减至两个和一个的时候的处理就行了
    public int findMin(int[] nums) {
        //if(nums.length==1)return nums[0];
        int lo=0;
        int hi=nums.length;
        int mid=0;
        while(lo<hi){
            mid=lo+(hi-lo)/2;
            if(nums[mid]>nums[hi-1]){//
                //中点在较大半边,向右找  
                lo=mid+1;
            }
            else if(nums[mid]<nums[hi-1]) 
                hi=mid+1; 
            else{//要么只剩两个,mid是靠右的。要么是唯一一个
                if(mid-1>=0)
                    return Math.min(nums[mid-1],nums[mid]) ;
                 else
                    return nums[mid];
            }
                  
        }
        return nums[lo];
        
    }
}
上一篇:变种水仙花数和水仙花数


下一篇:分享: 利用Readability解决网页正文提取问题