33. 搜索旋转排序数组
搜索旋转排序数组
一、思想
时间复杂度为O(n),使用遍历。时间复杂度为O(logn),使用二分查找。
二、代码实现
1、遍历
var search = function(nums, target) {
const n = nums.length;
for(let i=0;i<n;i++){
if(nums[i] == target){
return i;
}
}
return -1;
};
2、二分查找
对于有序数组,可以使用二分查找的方法查找元素。 利用二分查找实现的思想
var search = function(nums, target) {
var start = 0, end = nums.length-1;
while(start <= end){
const mid = start + ((end - start) >> 1);
if(target == nums[mid]) return mid;
if(nums[mid] >= nums[start]){
if(target >= nums[0] && target < nums[mid]){
end = mid-1;
}else{
start = mid+1;
}
}
if(nums[mid] <= nums[end]){
if(target > nums[mid] && target <= nums[end]){
start = mid+1;
}else{
end = mid-1;
}
}
}
return -1;
};
|