class Solution {
public:
int minArray(vector<int>& numbers)
{
int len = numbers.size();
int l = 0, r=len-1;
while(l<=r)
{
int m = l + (r-l)/2;
if(numbers[m] < numbers[r])
r = m;
else if(numbers[m] > numbers[r])
l = m+1;
else
r = r-1;
}
return numbers[l];
}
};
搜索旋转数组(不包含重复元素)
class Solution {
public:
int search(vector<int>& nums, int target)
{
int len = nums.size();
int l=0,r=len-1;
while(l<=r)
{
int m = l + (r-l)/2;
if(nums[l] == target)
return l;
if(nums[l] == nums[m])
{
l = l + 1;
}
else if(nums[l] < nums[m])
{
if(nums[l]>target || nums[m]<target)
l = m+1;
else
r = m;
}
else
{
if(nums[l]>target && nums[m]<target)
{
l = m+1;
}
else
r = m;
}
}
return -1;
}