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.



分類討論的題目 變形的二分搜索

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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章