您的位置:首页 > 其它

81. Search in Rotated Sorted Array II

2017-03-11 22:26 288 查看
如果有重复的情况出现,依旧使用mid方式考虑,就是在原先没有重复数据问题的基础上,增加判断用的等号。但是这次我就没有仔细考虑,直接暴力求解了。

class Solution {
public:
bool search(vector<int>& nums, int target) {
for(int i=0;i<nums.size();i++)
{
if(nums[i]==target)
return true;
}
return false;
}
};


这个问题仔细考虑的话,可以对之前的代码进行修改,得到AC代码。

class Solution {
public:
bool search(vector<int>& nums, int target) {
if(nums.size()==0)
return false;

int left=0;
int right=nums.size()-1;

while(right-left>1)
{
int mid=left+(right-left)/2;//index

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

//[left,right]

if(nums[left]==target)
return true;
else if(nums[right]==target)
return true;
else
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: