上一个博客写的是暴力直接解出来了
官方答案给出的是二分查找,时间复杂度比较低:
class Solution {
public:
int search(vector<int>& nums, int target) {
int n = nums.size();
if(n == 0){
return -1;
}
if(n == 1){
return nums[0] == target? 0:-1;
}
int l = 0;
int r = n-1;
while(l <= r)
{
int mid = (l+r)/2;
if(nums[mid] == target){
return mid;
}
if(nums[mid] >= nums[0]){
if(target >= nums[0] && target <= nums[mid]){
r = mid - 1;
}else{
l = mid + 1;
}
}else{
if(target >= nums[mid] && target <= nums[n-1]){
l = mid + 1;
}else{
r = mid - 1;
}
}
}
return -1;
}
};