剑指offer:旋转数组的最小位置

    xiaoxiao2021-03-25  98

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。

    NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

    class Solution { public: int minNumberInRotateArray(vector<int> rotateArray) { int size = rotateArray.size(); if(size == 0) return 0; int first,mid,end; first = 0; end = size-1; while(end>first) { if(end - first == 1) return min(rotateArray[first],rotateArray[end]); mid = (first+end)>>1; if(rotateArray[mid]>=rotateArray[first]) first = mid; if(rotateArray[mid]<=rotateArray[end]) end = mid; } return rotateArray[first]; } };

    转载请注明原文地址: https://ju.6miu.com/read-22632.html

    最新回复(0)