本文共 670 字,大约阅读时间需要 2 分钟。
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。考察二分查找。虽然是有序数组进行了旋转的,但实际上依然可以用二分的做法来找。
int minNumberInRotateArray(vector 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]; }
转载地址:http://edgvo.baihongyu.com/