Solution 1

Java
public int search(int[] nums, int target) {
    int left = 0, right = nums.length-1, mid;
    while (left <= right) {
        mid = (left + right)/2;
        if (target == nums[mid]) { return mid; }

        if (nums[left] <= nums[mid]) {
            if (target >= nums[left] && target < nums[mid]) {
                right = mid-1;
            } else {
                left = mid+1;
            }
        } else {
            if (target > nums[mid] && target <= nums[right]) {
                left = mid+1;
            } else {
                right = mid-1;
            }
        }
    }
    return -1;
}
Leet Code/java.java · L726–748