剑指offer-刷题笔记-简单题 JZ11 旋转数组的最小数字
二分查找
int low,mid,high;
int n = Array.size();
low = 0;
high = n-1;
while(low != high)
{
mid = (high+low)/2;
if(value == Array[mid])
{
return Array[mid];
}
else if(value < Array[mid])
{
high = mid - 1;
}
else
{
low = mid + 1;
}
}
题解
class Solution {
public:
int minNumberInRotateArray(vector<int> rotateArray) {
int low,mid,high;
int n = rotateArray.size();
low = 0;
high = n-1;
if(n == 1) return rotateArray[0];
while(low <= high)
{
mid = (high+low)/2;
if(low == high)
{
return rotateArray[mid];
}
if(rotateArray[mid] > rotateArray[high])
{
low = mid + 1;
}
else
{
if(rotateArray[mid] == rotateArray[high])
{
high --;
}
else
{
high = mid;
}
}
}
return 0;
}
};