5旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
有重复元素。
思路:使用二分搜索,nums[mid]元素和当前nums[end]做比较,如果大于end,则mid在上半段,否则在下半段。注意等于的时候要--end。
/** * * @param rotateArray int整型一维数组 * @return int整型 */ func minNumberInRotateArray(nums []int) int { low, high := 0, len(nums) - 1 for low < high { pivot := low + (high - low) / 2 if nums[pivot] < nums[high] { high = pivot } else if nums[pivot] > nums[high] { low = pivot + 1 } else { high-- } } return nums[low] }