您的位置:首页 > 其它

Medium 81题 Search in Rotated Sorted Array II

2016-09-28 16:23 288 查看
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.

Solution:
基于上一题作了一些调整

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: