class Solution {
public:
int search(int A[], int s, int t, int target) {
int l = s;
int r = t;
while (l <= r) {
int p = (l + r) / 2;
if (A[p] == target)
return p;
else if (A[p] < target)
l = p + 1;
else
r = p - 1;
}
return -1;
}
int search(int A[], int n, int target) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int l = 0;
int r = n - 1;
while (l <= r) {
int p = (l + r) / 2;
if (A[p] < A[0])
r = p - 1;
else
l = p + 1;
}
int pos1 = search(A, 0, r, target);
int pos2 = search(A, l, n - 1, target);
return pos1 == -1 ? pos2 : pos1;
}
};
Small Case: 8ms
Large Case: 32ms
Time: O(lgn)
Space: O(1)