[LeetCode] Search in Rotated Sorted Array

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

class Solution {
public:
    int search(int A[], int n, int target) {
        if(n<=0)
            return -1;
        int i = 0,j = n-1;

        if(target == A[i])
            return i;
        else if(target == A[j])
            return j;

        if(target>A[i]){
            while(i<n-1 && target>A[i] && A[i]<A[i+1]){
                i++;
                if(target==A[i])
                    return i;
            }
            return -1;
        }else if(target<A[j]){
            while(j>0 && target<A[j] && A[j]>A[j-1]){
                j--;
                if(target==A[j])
                    return j;
            }
            return -1;
        }//end if
    
     return -1;
    }
};
原文地址:https://www.cnblogs.com/Xylophone/p/3877675.html