一个简洁的 search in rotated sorted array 的解法

对有重复数组的情况也有效
 
 
public class Solution {
    public boolean search(int[] A, int target) {
	     int left = 0, right = A.length - 1;
	     while( left <= right){
	    	 int mid = (left + right)/2;
	    	 if(A[mid] == target) return true;
	    	 if(A[left] < A[mid]){
	    		 if(target <= A[mid] && target >= A[left])
	    			 right = mid - 1;
	    		 else left = mid + 1;
	    	 } else if (A[left] > A[mid]){
	    		 if(target >= A[left] || target <= A[mid])
	    			 right = mid -1;
	    		 else left = mid + 1;
	    	 }
	    	 else left ++;
	     }
	     return false;
	    }
}



你可能感兴趣的:(一个简洁的 search in rotated sorted array 的解法)