题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
以下有两个方法,第一个方法用来求旋转数组中的最小值。第二种方法求旋转数组中最小值以及数组旋转前最小值在数组中的下标值。
Java代码(方法1)
public int minNumberInRotateArray(int [] array) {
int n=array.length;
if(n==0){
return 0;
}
if(n==1){
return array[0];
}
int min=array[0];
for(int i=0;i<n;i++){
if(min>array[i]){
min=array[i];
}
}
return min;
}
java代码(方法2)
public ArrayList minNumberInRotateArray(int [] array) {
ArrayList list=new ArrayList();
//list中存放两个元素,第一个元素为旋转前元素最小值的下标
//第二个元素为旋转数组中的元素最小值
int n=array.length;
if(n==0){
list.add(-1);//元素下标
list.add(-1);//最小元素值
return list;
}
if(n==1){
list.add(0);
list.add(array[0]);
return list;
}
int min=array[0];
int count=0;//最小值的下标
//寻找元素最小值以及最小值元素下标
for(int i=0;i<n;i++){
if(min>array[i]){
count =i;
min=array[i];
}
}
list.add(count);
list.add(min);
return list;
}