您的位置:首页 > 其它

LeetCode | Search in Rotated Sorted Array II

2013-12-15 19:01 393 查看


题目:

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.


思路:

类似/article/1382554.html。但是遇到两个相等的数时要特殊考虑,最坏情况下,左侧和右侧的数组都需要遍历。


代码:

class Solution {
public:
    bool search(int A[], int n, int target) {
        return searchInternal(A, 0, n-1, target);
    }
    
    bool searchInternal(int A[], int begin, int end, int target){
        if(begin + 1 == end || begin == end){
            return A[begin] == target || A[end] == target;
        }
        
        int middle = begin + (end - begin) / 2;
        
        if(A[begin] < A[middle]){
            if(A[begin] <= target && target <= A[middle]){
                return searchInternal(A, begin, middle, target);
            }
            else{
                return searchInternal(A, middle, end, target);
            }
        }
        else if(A[middle] < A[end]){
            if(A[middle] <= target && target <= A[end]){
                return searchInternal(A, middle, end, target);
            }
            else{
                return searchInternal(A, begin, middle, target);
            }
        }
        else{
            return searchInternal(A, begin, middle, target) || searchInternal(A, middle, end, target);
        }
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: