《剑指offer》-旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

考察二分查找。虽然是有序数组进行了旋转的,但实际上依然可以用二分的做法来找。

	int minNumberInRotateArray(vector<int> rotateArray){
		int low = 0;
		int high = rotateArray.size() - 1;
		while (low < high){
			int mid = low + (high - low) / 2;
			if (rotateArray[mid] > rotateArray[high]){
				low = mid + 1;
			}
			else if (rotateArray[mid] == rotateArray[high]){
				high = high - 1;;
			}
			else{
				high = mid;
			}
		}
		return array[low];
	}
原文地址:https://www.cnblogs.com/zjutzz/p/6621772.html