5/30/2014

51. Search in Rotated Sorted Array II

public class Solution {
    public boolean search(int[] A, int target) {
        if (A.length<=0) return false;
        return mySearch(A, 0, A.length-1, target)!=-1;
    }
   
    public int mySearch(int[] A, int head, int back, int target) {
        if (head>back) return -1;
        else {
            int mid=(head+back)/2;
       
            if (target==A[mid]) return mid;
       
            if (A[mid]>A[head]) {
                if (target<=A[mid] && target>=A[head]) return mySearch(A, head, mid-1, target);
                else return mySearch(A, mid+1, back, target);
            }
       
            if (A[mid]<A[head]) {
                if (target<=A[mid] || target>=A[head]) return mySearch(A, head, mid-1, target);
                else return mySearch(A, mid+1, back, target);
            }
           
            if (A[mid]==A[head]) return mySearch(A, head+1, back, target);
       
            return -1;
        }
    }
}

没有评论:

发表评论