6旋转数组的最小数字
题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
class Solution { public: int binarySearch(vector<int>& rotateArray,int& flag){ int start = 0,end = rotateArray.size() - 1; int mid = 0; while(start + 1 < end){ mid = start + (end - start) / 2; if(rotateArray[mid] > flag){ start = mid; } else{ end = mid; } } if(rotateArray[start] < rotateArray[end]){ return rotateArray[start]; } else{ return rotateArray[end]; } return -1; } int minNumberInRotateArray(vector<int> rotateArray) { if(rotateArray.size() == 0){ return 0; } int flag = rotateArray[rotateArray.size() - 1]; int res = binarySearch(rotateArray,flag); return res; } };