把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。 輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。 例如數組{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