牛客网_剑指offer_旋转数组的最小数字_c++

题目:

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

解题思路:

这道题目要利用之前是非减序的性质,直接从头开始遍历,找到第一个比首元素小的数字就是答案,因为它的后面是非减序排列的,因此找到的第一个比首元素小的数字就是最原始的非减序数列的第一个元素。如果没找到的话,说明首元素就是最小的,返回首元素即可。

class Solution 
{
public:
    int minNumberInRotateArray(vector<int> rotateArray) 
    {
        if (rotateArray.size() == 0) return 0;
        int res = rotateArray[0];
        for (int i = 1; i < rotateArray.size(); i++)
        {
            if (res > rotateArray[i])
                return rotateArray[i];
        }
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_40349531/article/details/89468703