6-旋转数组的最小数字
1. 题目要求
2. 题解
--------------------------------------------【2021-08-07】更新-------------------------------------------------------
import java.util.ArrayList;
import java.util.Arrays;
public class Solution {
public int minNumberInRotateArray(int [] array) {
if(array.length==0)
return 0;
if(array.length==1)
return array[0];
if(array.length==2)
{
if(array[0]<=array[1])
return array[0];
else
return array[1];
}
int left=0;
int right=array.length-1;
int mid=(left+right)>>1;
/*
要比较中点与右端点的值的大小
反例:[1,2,3,4,5]
*/
if(array[mid]>array[right])
{
return minNumberInRotateArray(Arrays.copyOfRange(array,mid+1,right+1));
}
else if(array[mid]<array[right])
{
return minNumberInRotateArray(Arrays.copyOfRange(array,left,mid+1));
}else
{
return minNumberInRotateArray(Arrays.copyOfRange(array,left,right));
}
}
}
查看13道真题和解析