1public int search(int[] nums, int target) {
2 int left = 0;
3 int right = nums.length - 1;
4
5 while (left <= right) {
6 int mid = (left + right) / 2;
7
8 if (nums[mid] == target) {
9 return mid;
10 }
11
12 if (nums[left] <= nums[mid]) {
13 if (nums[left] <= target && target < nums[mid]) {
14 right = mid - 1;
15 } else {
16 left = mid + 1;
17 }
18 } else {
19 if (nums[mid] < target && target <= nums[right]) {
20 left = mid + 1;
21 } else {
22 right = mid - 1;
23 }
24 }
25 }
26
27 return -1;
28}