您的位置:首页 > 其它

81. Search in Rotated Sorted Array II

2018-03-23 19:50 267 查看
该题与Search in Rotated Sorted Array 同理,由于存在重复元素,当mid处与边缘right位置处的值相同时,若边缘位置不为target,则边缘right左移一位:class Solution {
public:
bool search(vector<int>& nums, int target) {
int left=0,right=nums.size()-1;
int mid=(right+left)/2;
while(left<=right)
{
if(nums[mid]==target/*||nums[left]==target||nums[right]==target*/)
return 1;
else
{
if(nums[mid]<nums[right]) //right is ordered
{
if(target>nums[mid]&&target<=nums[right])
{
left=mid+1;
}
else
{
right=mid-1;
}

}
else //left is ordered
{
if(nums[left]<nums[mid])
{
if(target>=nums[left]&&target<nums[mid])
right=mid-1;
else
left=mid+1;
}
else
{
if(nums[right]==target)
return 1;
else
right--;
}
}

}

mid =(left+right)/2;

}

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