您的位置:首页 > 其它

[LeetCode] Search in Rotated Sorted Array II

2013-11-05 10:25 417 查看
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.

问题描述:类似前面的Search in Rotated Sorted Array,这里数组中可能会用重复元素。写一个函数判断一个给定的元素是否在数组中。对于“重复”这一条件会如何影响时间复杂度,为什么?

如果是采用顺序查找的方式那么就没有什么影响,但如果是采用二分或者其它的方法,就可能产生影响,因为,当采用二分查找时,根据查找元素与中间元素的比较有时不能确定是在左边查找还是在右边查找。这里先给出采用顺序查找的方法:

class Solution {
public:
bool search(int A[], int n, int target) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
int i = 0;

if(target > A[0]) {
i = 1;
while(i < n && A[i-1] <= A[i] && target > A[i])
++i;
if(target == A[i])
return true;
return false;
}
else if(target < A[0]) {
i = n - 1;
while(i > 0 && A[i-1] <= A[i] && target < A[i])
--i;
if(target == A[i])
return true;
return false;
}
else {
return true;
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息