Question:
Follow up for "Search in Rotated Sorted Array":
What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Write a function to determine if a given target is in the array.
基于上一题作了一些调整
public class Solution {
public boolean 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 true;
if(nums[low]<=nums[mid]) //left part is sorted
{
if((nums[low]==nums[mid])&&mid!=low)
{
low++;
continue;
}
if(target<nums[mid]&&target>=nums[low])
high=mid-1;
else
low=mid+1;
}
if(nums[mid]<=nums[high]) //right part is sorted
{
if((nums[high]==nums[mid])&&(mid!=high))
{
high--;
continue;
}
if(target<=nums[high]&&target>nums[mid])
low=mid+1;
else
high=mid-1;
}
}
return false;
}
}