Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

Find the minimum element.

You may assume no duplicate exists in the array.

 

在一个反转了的排好序的数组中,找出最小的数

 

可以直接寻找。

 

public class Solution {
    public int findMin(int[] nums) {
        
        
        if( nums.length == 1)
            return nums[0];
        int result = nums[0];
        for( int i = 1 ; i<nums.length;i++)
            result = Math.min(nums[i],result);

        return result;
    }
}

 

二分查找。

public class Solution {
    public int findMin(int[] nums) {
        
      if( nums.length == 1)
            return nums[0];
        int left = 0,right = nums.length-1;
        int mid = (left+right)/2;
        int first = nums[0];
        while( left < right ){


            if( nums[left] == nums[mid] ){
                first = Math.min(Math.min(first,nums[left]),nums[right]);
                break;
            }
            else if( nums[left] < nums[mid] ){
                left = mid;
                mid = (left+right)/2;
                first = Math.min(first,nums[left]);
            }else {
                right = mid;
                mid = (left+right)/2;
                first = Math.min(first,nums[left]);
            }

        }
        return Math.min(first,nums[left]);
    }
}