Question:
Suppose a sorted array is rotated at some pivot unknown to you beforehand.
(i.e., 0 1 2 4 5 6 7
might become 4 5 6 7 0 1 2
).
You are given a target value to search. If found in the array return its index, otherwise return -1.
You may assume no duplicate exists in the array.
Solution:
为什么有的要加等号还是搞不清楚
public class Solution {
public int search(int[] nums, int target) {
int n=nums.length;
int low=0;
int high=n-1;
while(low<=high)
{
int mid=(high-low)/2+low;
if(nums[mid]==target)
return mid;
if(nums[low]<=nums[mid]) //left part is sorted
{
if(target<nums[mid]&&target>=nums[low])
high=mid-1;
else
low=mid+1;
}
if(nums[mid]<=nums[high]) //right part is sorted
{
if(target<=nums[high]&&target>nums[mid])
low=mid+1;
else
high=mid-1;
}
}
return -1;
}
}