题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
思路:题目说明输入输入一个非递减排序的数组的一个旋转,就拿例子数组{3,4,5,1,2}来说,只需遍历该数组,找出后一个元素比前一个元素小,那么该元素就是最小值,即1比5小,返回1,如果找不到,返回首元素。
class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray)
{
int len = rotateArray.size();
if ( len == 0) //若数组大小为0,返回0
return 0;
for (int i = 0; i < len; i++)
{
if (rotateArray[i] > rotateArray[i + 1]) //例如旋转数组{3,4,5,1,2},当i = 2,元素为5,
return rotateArray[i + 1]; //当i = 3,元素为1,前一个元素大于后一个元素,此时
//便可以返回后一个元素,即最小值
}
//找不到,返回首元素
return rotateArray[0];
}
};