class Solution {
public:
bool search(int A[], int n, int target) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
bool isFound = false;
if (n <= 0)
{
return isFound;
}
int left = 0;
int right = n - 1;
while (left <= right)
{
int mid = left + ((right - left) >> 1);
if (A[mid] > target)
{
if (A[mid] > A[left])
{
if (A[left] > target)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
else if (A[mid] < A[left])
{
right = mid - 1;
}
else
{
isFound = search(A + left, mid - left, target) || search(A + mid + 1, right - mid, target);
break;
}
}
else if (A[mid] < target)
{
if (A[mid] > A[left])
{
left = mid + 1;
}
else if (A[mid] < A[left])
{
if (A[left] > target)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
else
{
isFound = search(A + left, mid - left, target) || search(A + mid + 1, right - mid, target);
break;
}
}
else
{
isFound = true;
break;
}
}
return isFound;
}
};
LeetCode-Search in Rotated Sorted Array II
最新推荐文章于 2024-10-10 22:59:02 发布