把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{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.empty()) {
            return 0;
        }
  
        int low = 0;
        int high = rotateArray.size() - 1;
        int middle = 0;
        if (rotateArray.at(low) < rotateArray.at(high)) { //说明已经是非递减排序,直接返回第一个最小元素
            return rotateArray.at(low);
        }
  
        //二分查找
        while (low < high) {
            if (high - low == 1) {
                middle = high;
                break;
            }
  
            int middle = (low + high) / 2;
            if (rotateArray.at(middle) >= rotateArray.at(low)) {
                low = middle;
            }
            else if (rotateArray.at(middle) <= rotateArray.at(low)) {
                high = middle;
            }
        }
          
        return rotateArray.at(middle);
    }
};

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM