int search(vector<int>& nums, int target) {
int len = nums.size();
if (len == 0) return -1;
int i = 0;
int j = len - 1;
while (i <= j) {
int mid = i + (j - i) / 2;
if (nums[mid] == target) return mid;
// 在左边 , e.g. [3 4 5 6 7 8 1 2]
if (nums[i] < nums[mid]) {
// 比如找 5
if (nums[i] <= target && target < nums[mid]) {
j = mid - 1;
} else { // 比如找 1
i = mid + 1;
}
} else { // 在右边, e.g. [7 8 1 2 3 4 5]
// 比如找 3
if (nums[mid] < target && target <= nums[j]) {
i = mid + 1;
} else { // 比如找8
j = mid - 1;
}
}
}
return -1;
}