首页 > 其他 > 详细

LeetCode OJ--Search in Rotated Sorted Array

时间:2014-02-13 00:46:19      阅读:324      评论:0      收藏:0      [点我收藏+]

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

转换了一次的有序数组,进行类似二分查找。

从begin到mid和从mid到end,二者中肯定有一个是有序的。

bubuko.com,布布扣
#include <iostream>
using namespace std;
  
class Solution {
public:
    int binarySearch(int A[],int target,int begin,int end)
    {
        int mid = (begin+end)/2;

        if(target == A[mid])
            return mid;
        if(target == A[begin])
            return begin;
        if(target == A[end])
            return end;
        if(begin>=end)
            return -1;
        
        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])//后面有序
        {
            if(target>A[mid] && target<A[end]) //在后面
                return binarySearch(A,target,mid+1,end);
            else
                return binarySearch(A,target,begin,mid-1);//在前面
        }
        return -1;
    }
    int search(int A[], int n, int target) {
       return  binarySearch(A,target,0,n-1);
    }
};

int main() 
{
    Solution myS;
    int A[] = {4,5,6,7,0,1,2};
    int ans = myS.search(A,7,0);
    cout<<ans<<endl;
    return 0;

}
bubuko.com,布布扣

LeetCode OJ--Search in Rotated Sorted Array

原文:http://www.cnblogs.com/qingcheng/p/3546234.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!