import java.util.*; public class Solution { //归并排序 // public int minNumberInRotateArray (int[] nums) { // mergeSort(nums,0,nums.length-1); // return nums[0]; // } // private void mergeSort(int[] nums,int left,int right){ // if(left>=right){ // return; // } // int mid=(left+right)/2; // mergeSort(nums,left,mid); // mergeSort(nums,mid+1,right); // merge(nums,left,mid,right); // } // private void merge(int[] nums,int left,int mid,int right){ // int[] arr=new int[right-left+1]; // int i=left; // int j=mid+1; // int k=0; // while(i<=mid&&j<=right){ // if(nums[i]<=nums[j]){ // arr[k++]=nums[i++]; // }else{ // arr[k++]=nums[j++]; // } // } // while(i<=mid){ // arr[k++]=nums[i++]; // } // while(j<=right){ // arr[k++]=nums[j++]; // } // for(k=0;k<arr.length;k++){ // nums[k+left]=arr[k]; // } // } //二分查找 public int minNumberInRotateArray (int[] nums) { int i=0; int j=nums.length-1; while(i<j){ int mid=(i+j)/2; if(nums[mid]>nums[j]){ i=mid+1; }else if(nums[mid]<nums[j]){ j=mid; }else{ j--; } } return nums[i]; } }