Search in Rotated Sorted Array
Input: nums = [4,5,6,7,0,1,2], target = 0
Output: 4Input: nums = [4,5,6,7,0,1,2], target = 3
Output: -1class Solution {
public int search(int[] nums, int target) {
if(nums == null || nums.length == 0){
return -1;
}
int start = 0, end = nums.length - 1;
while(start + 1 < end){
int mid = start + (end - start) / 2;
if(nums[mid] == target)
return mid;
//判断mid落在哪一个区间
if(nums[mid] > nums[start]){
//然后按照常规二分法来寻找target
if(target >= nums[start] && target <= nums[mid]){
end = mid;
}else{
start = mid;
}
}
else{
if(target <= nums[end] && target >= nums[mid]){
start = mid;
}
else{
end = mid;
}
}
}
if(nums[start] == target){
return start;
}
if(nums[end] == target)
return end;
return -1;
}
}Last updated