题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
package code;
//
//题目描述
//把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
//输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
//例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
//NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
//思路:遍历数组,如果a[i] > a[i+1],
//则索引i之前是数组旋转前的后部分,i之后是数组旋转前的前部分,i+1则是最小值
public class Offer06
{
public static void main(String[] args)
{
Offer06 offer = new Offer06();
int[] array = {3,4,5,1,2};
System.out.println(offer.minNumberInRotateArray(array));
}
public int minNumberInRotateArray(int[] array)
{
if(array.length == 0)
return 0;//若数组大小为0,则返回0。
for(int i = 0; i < array.length-1; i++)
{//遍历数组,找出数组的最小值
//如果数组刚好旋转一周则相当于没旋转,此时这段代码的功能失效
if(array[i] > array[i+1])
return array[i+1];
}
return array[0];//如果数组旋转一周,则最小值仍在第一位
}
}