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];
}
}