题目:
https://leetcode-cn.com/problems/search-in-rotated-sorted-array
代码:
int binarysearch(vector &nums, int target,int l,int e)
{
if (nums.empty())
{
return -1;
}
if (l > e)
{
return -1;
}
while (l <= e)
{
int mid = (l + e + 1) / 2;
if (nums[mid] == target)
{
return mid;
}
else
{
if (nums[mid] > target)
{
e = mid - 1;
}
else
{
l = mid + 1;
}
}
}
return -1;
}
class Solution {
public:
int search(vector& nums, int target) {
int size = nums.size();
if (size == 0)
{
return -1;
}
int l = 0, e = size - 1;
while (l <= e)
{
int mid = (l + e + 1) / 2;
if (nums[mid] == target)
{
return mid;
}
else
{
if (nums[mid] > nums[l])
{
if (target < nums[mid]&&target >= nums[l])
{
return binarysearch(nums, target, l, mid - 1);
}
else
{
l = mid + 1;
}
}
else
{
if (target > nums[mid]&&target <=nums[e])
{
return binarysearch(nums, target, mid + 1, e);
}
else
{
e = mid - 1;
}
}
}
}
return -1;
}
};
结果: