旋转数组的最小数字(简单,二分)

题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。
NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
示例1
输入
[3,4,5,1,2]
返回值
1
根据旋转数组的性质,可以取第一个数作为标准进行二分,比它大的在右区间,比它小的在左区间。

class Solution {
    
    
public:
    int minNumberInRotateArray(vector<int> rotateArray) {
    
    
        if(rotateArray.empty()) return 0;
        int l=0,r=rotateArray.size()-1,mid,ans=rotateArray[0];
        while(l<=r)
        {
    
    
            mid=(l+r)/2;
            if(rotateArray[mid]>=ans)
                l=mid+1;
            else ans=rotateArray[mid],r=mid-1;
        }
        return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_43540515/article/details/114276777