leetcode_Search in Rotated Sorted Array II

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.

  

class Solution {
public:
    bool search(int A[], int n, int target) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        if(A == NULL || n <1) return false;
        
        int left = 0;
        int right = n-1;
        while(left <= right){
        
            int mid = (right - left)/2 + left;
            if(A[mid] == target)
                return true;
            if(A[mid] > A[left])
            {
                if(target >= A[left] && target < A[mid])
                    right = mid - 1;
                else 
                    left = mid  + 1;
            }else if(A[mid] < A[left]){
            
                if(target <= A[right] && target > A[mid])
                    left = mid + 1;
                else
                    right = mid -1;
            }else{
                if(A[left] == target)
                    return true;
                
                ++left ;
            }
        }
        return false;
    }
};
原文地址:https://www.cnblogs.com/graph/p/3331285.html