题目
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
class Solution { public: int minNumberInRotateArray(vector<int> arr) { if(arr.size()==0) return 0; int left=0,right=arr.size()-1,mid=0; while(arr[left]>=arr[right]) { mid=left+(right-left)/2; if(right-left==1) { mid=right; break; } if(arr[left]==arr[right]&&arr[left]==arr[mid]) return getMinInOrder(arr,left,right); if(arr[left]<=arr[mid]) left=mid; else right=mid; } return arr[mid]; } private: int getMinInOrder(vector<int> arr,int left,int right) { int m=arr[left]; for(int i=left+1;i<=right;++i) if(m>arr[i]) m=arr[i]; return m; } };