zoukankan      html  css  js  c++  java
  • LeetCode OJ--Search in Rotated Sorted Array II

    http://oj.leetcode.com/problems/search-in-rotated-sorted-array-ii/

    如果在数组中有重复的元素,则不一定说必定前面或者后面的一半是有序的,所以有个while循环的处理。

    #include <iostream>
    using namespace std;
      
    class Solution {
    public:
        bool binarySearch(int A[],int target,int begin,int end)
        {
            int mid = (begin+end)/2;
    
            if(target == A[mid])
                return true;
            if(target == A[begin])
                return true;
            if(target == A[end])
                return true;
            if(begin>=end)
                return false;
    
            while(A[begin] == A[mid])
                begin++;
            if(A[begin]<A[mid])//前面有序
            {
                if(target>A[begin] && target<A[mid]) //在前面
                    return binarySearch(A,target,begin,mid-1);
                else
                    return binarySearch(A,target,mid+1,end); //在后面
            }
            else if(A[mid]<=A[end])//后面有序
            {
                while(A[mid] == A[end])
                    end--;
                if(target>A[mid] && target<A[end]) //在后面
                    return binarySearch(A,target,mid+1,end);
                else
                    return binarySearch(A,target,begin,mid-1);//在前面
            }
            return false;
        }
        bool search(int A[], int n, int target) {
           return  binarySearch(A,target,0,n-1);
        }
    };
    
    int main() 
    {
        Solution myS;
    
        int A[] = {1,3,1,1,1};
        bool ans = myS.search(A,5,3);
        cout<<ans<<endl;
        return 0;
    
    }
  • 相关阅读:
    性能指标有哪些?
    Jmeter获取数据库数据
    jmeter用什么查看结果报告
    jmeter中assertion的使用
    jmeter进行压测的步骤
    Jenkins 构建方式有几种
    Redis数据类型
    敏捷 还是瀑布 敏捷优缺点
    如何加快数据库查询速度
    智力题总结
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3546363.html
Copyright © 2011-2022 走看看