题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
示例1
输入
[3,4,5,1,2]
返回值
1
根据旋转数组的性质,可以取第一个数作为标准进行二分,比它大的在右区间,比它小的在左区间。
class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray) {
if(rotateArray.empty()) return 0;
int l=0,r=rotateArray.size()-1,mid,ans=rotateArray[0];
while(l<=r)
{
mid=(l+r)/2;
if(rotateArray[mid]>=ans)
l=mid+1;
else ans=rotateArray[mid],r=mid-1;
}
return ans;
}
};