问题描述:
Follow up for “Search in Rotated Sorted Array”:
What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Write a function to determine if a given target is in the array.
分析:
根据这道题的特点,需要找到转折点,其条件是nums[i+1]
bool search(int* nums, int numsSize, int target) {
int i;
for(i = 0;i<numsSize;i++){
if(nums[i]==target)
return true;
if(i+1<numsSize && nums[i+1]<nums[i])
break;
}
int left = i+1;
int right = numsSize-1;
while(left<=right){
int mid = (left+right)/2;
if(nums[mid]==target)
return true;
else if(nums[mid]<target)
left = mid+1;
else
right = mid-1;
}
return false;
}
代码2:暴力搜索(8ms)
int search(int* nums, int numsSize, int target) {
int i;
for(i = 0;i<numsSize;i++){
if(nums[i]==target)
break;
}
if(i>=numsSize)
return -1;
return i;
}