题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray) {
int len=rotateArray.size();
vector<int>::iterator s=rotateArray.begin();
vector<int>::iterator e=rotateArray.end()-1;
int mid=*s;//在vector 中s 代表指针,*s代表指向的内容
while(*s>=*e)
{
if(e-s==1)//当只有两个值时
return *e;
mid=(e-s)/2;
if(*(s+mid)>=*s)//当在后半部分
s=s+mid;
else if(*(s+mid)<=*e)//当在前半部分
e=s+mid;
}
return *(s+mid);
}
};