-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path33.cpp
More file actions
33 lines (33 loc) · 944 Bytes
/
Copy path33.cpp
File metadata and controls
33 lines (33 loc) · 944 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
public:
int search(vector<int> &nums, int target) {
int i = 0, j = nums.size() - 1, mid = 0, n = nums.size();
if (n == 0)
return -1;
while (i < j) {
mid = i + (j - i) / 2;
if (nums[mid] > nums[i] && nums[mid] > nums[j])
i = mid + 1;
else if (nums[mid] < nums[i] && nums[mid] < nums[j])
j = mid;
else
break;
}
i = nums[i] < nums[j] ? i : j;
int start = 0, end = i - 1;
if (target < nums[0] || i == 0) {
start = i;
end = n - 1;
}
while (start <= end) {
mid = start + (end - start) / 2;
if (nums[mid] > target)
end = mid - 1;
else if (nums[mid] < target)
start = mid + 1;
else
return mid;
}
return -1;
}
};