跟进“搜索旋转排序数组”,假如有重复元素又将如何?
是否会影响运行时间复杂度?
如何影响?
为何会影响?
写出一个函数判断给定的目标值是否出现在数组中。
样例
给出[3,4,4,5,7,0,1,2]和target=4,返回 true
***************************************************
在搜索旋转数组的基础上 判断 left 和 mid 的值相等的情况
public class Solution {
/**
* param A : an integer ratated sorted array and duplicates are allowed
* param target : an integer to be search
* return : a boolean
*/
public boolean search(int[] A, int target) {
// write your code here
int left = 0;
int right = A.length - 1;
while (left <= right) {
int mid = (left + right)/2;
if(A[mid] == target)
return true;
if(A[mid] > A[left]){
if(A[mid] > target && target > A[left])
right = mid;
else {
left = mid+1;
}
}
else if(A[left] > A[mid]){
if(A[mid] < target && target <= A[right])
left = mid + 1;
else
right = mid;
}
else {
left++;
}
}
return false;
}
}