Search in Rotated Sorted Array
Basic Idea:
Java Code:
class Solution {
public int search(int[] nums, int target) {
if (nums == null || nums.length == 0) return -1;
int p = 0, r = nums.length - 1;
int last = nums[nums.length - 1];
while (p + 1 < r) {
int q = (r - p) / 2 + p;
if (target > last) {
if(nums[q] < last)
r = q;
else if (nums[q] < target)
p = q;
else
r = q;
} else {
if (nums[q] > last)
p = q;
else if (nums[q] < target)
p = q;
else
r = q;
}
}
if (nums[p] == target) return p;
if (nums[r] == target) return r;
return -1;
}
}