class Solution {
public:
int search(vector<int>& nums, int target) {
int n = nums.size();
int left = 0, right = nums.size()-1, mid;
if(n == 1)
return nums[0] == target ? 0 : -1;
else if(n == 0)
return -1;
while(left <= right){
mid = (left + right) / 2;
if(nums[mid] == target)
return mid;
if(nums[mid] >= nums[0]){ //第一个等号
if(nums[0] <= target && target < nums[mid]) //第二个等号
right = mid - 1;
else
left = mid + 1;
}
else{
if(nums[mid] < target && target <= nums[n - 1]) //第三个等号
left = mid + 1;
else
right = mid -1;
}
}
if(left > right)
target = -1;
return target;
}
};
Accepted
195/195 cases passed (4 ms)
Your runtime beats 69.69 % of cpp submissions
Your memory usage beats 34.69 % of cpp submissions (10.8 MB)