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.
분류 토론 의 제목 변형 2 분 검색
public class Solution {
    public int search(int[] A, int target) {
        if(A==null||A.length==0){
            return -1;
        }
        int left = 0;
        int right = A.length-1;
        int mid = 0;
        while(left<=right){
            mid = left+(right-left)/2;
            if(A[mid] == target){
                return mid;
            }
              
            // it got to be that one of the both side is sorted
            if(A[mid]<A[right]){
                if(target>A[mid] && target<=A[right]){
                    left = mid+1;
                }else{
                    right = mid-1;
                }
            }else{
                if(target<A[mid] && target>=A[left]){
                    right = mid-1;                   
                }else{
                    left = mid+1;
                }
            }
        }
        return -1;
    }
}

좋은 웹페이지 즐겨찾기