Search in Rotated Sorted Array

class Solution {
    public int search(int[] nums, int target) {
        if(nums.length == 0) return -1;
        int l = 0;
        int r = nums.length - 1;
        while((l+1) < r){
            int mid = (l+ r) / 2;
            if(nums[mid] > nums[l]) {
                if(nums[mid] > target && nums[l] <= target){
                    r = mid;
                } else {
                    l = mid;
                }
            } else {
                if(nums[mid] < target && nums[r] >= target){
                    l = mid;
                } else {
                    r = mid;
                }
            }
        }
        if(nums[l] == target) return l;
        if(nums[r] == target) return r;
        return -1;
    }
}

最后更新于

这有帮助吗?