题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
思路:
代码实现:
public class solutions{
public int minNumberInRotateArray(int []array){
int len = array.length;//数组的长度
int left = 0; //指向数组的第一个元素
int right = len-1;//指向数组的最后一个元素
int mid = len/2;//指向数组的中间元素
if(len == 0){
return 0;
}
while(array[left] > array[right]){
if(right - left == 1){
mid = right;
break;
}
if(array[mid] > array[left]){//说明mid元素在前面一个递增数组中
left = mid;
mid += 1;//中间元素向后移一位
}
if(array[mid] < array[right]){//说明mid元素在后面一个递增数组中
right = mid;
mid -= 1;//中间元素向前移一位
}
}
return array[right];
}
}