Search in Rotated Sorted Array II 旋转数组二分查找 有重复

来源:互联网 发布:c语言给数组赋初值 编辑:程序博客网 时间:2024/06/01 10:47

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:    //1,1, 1,2,1,1,1,恰好左中右都是1,这时我们 ++左下标,--右下标    bool search(int A[], int n, int target) {                if(n==0)            return false;        int left,right,mid;        left=0;        right=n-1;        while(left<=right)        {            mid=(left+right)/2;            if(A[mid]==target)                return true;            if(A[left]==A[mid]&&A[mid]==A[right])            {                left++;right--;            }            else if(A[left]<=A[mid])//左边有序            {                if(A[left]<=target&&target<A[mid])                    right=mid-1;                else                    left=mid+1;            }            else if(A[mid]<=A[right])            {                if(A[mid]<target&&target<=A[right])                    left=mid+1;                else                    right=mid-1;            }        }        return false;    }};

0 0
原创粉丝点击