leetcode33
Search in Rotated Sorted Array
示例 1:
输入: nums = [4,5,6,7,0,1,2], target = 0
输出: 4
示例 2:
输入: nums = [4,5,6,7,0,1,2], target = 3
输出: -1
O(logn)
Binary search
class Solution {
public int search(int[] nums, int target) {
//边界条件
if(nums==null||nums.length==0) return -1;
int start=0;
int end=nums.length-1;
if(nums[start]==target){
return start;
}
if(nums[end]==target){
return end;
}
while(start+1<end){
int mid=(end-start)/2+start;
if (nums[mid]==target) return mid;
//前半段正序
if(nums[start]<nums[mid]){
//target在前半段中
if(nums[start]<=target&&target<nums[mid]){
end=mid;
}
else{
start=mid;
}
}
//后半段正序
else{
//target在后半段中
if(nums[mid]<=target&&target<nums[end]){
start=mid;
}
else{
end=mid;
}
}
}
return -1;
}
}