題目描述
把一個數組最開始的若幹個元素搬到數組的末尾,我們稱之為數組的旋轉。輸入一個非遞減排序的數組的一個旋轉,輸出旋轉數組的最小元素。例如數組{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 mid = 0;
while(low < high) {
if(rotateArray[low] < rotateArray[high])
return rotateArray[low];
mid = low + (high - low) / 2;
if(rotateArray[low] < rotateArray[mid])
low = mid + 1;
else if(rotateArray[mid] < rotateArray[high])
high = mid;
else
low++;
}
return rotateArray[low];
}
};