您的位置:首页 > 其它

LeetCode || Search in Rotated Sorted Array

2015-07-21 19:46 477 查看
class Solution {
public:
int search(vector<int>& nums, int target) {
int i = 0, j = nums.size()-1;
int mid = i;

while(i<=j)
{
//if(nums[i]<=nums[j])//如果属于一个递增的序列,则只需要二叉遍历即可。
//  return BinarySearch(nums, i, j, target);

mid = (i+j)/2;

if(target == nums[mid])//已经查找到mid处
return mid;

if(target == nums[i])//查找到头部
return i;

if(mid == i)//避免进入死循环
{
i++;
continue;
}

if(target > nums[i])//查找结果在前面半段
{
if(nums[mid] > nums[i] && target > nums[mid])
i = mid;
else
j = mid;
}
else//target < nums[i] 查找结果在后面半段
{
if(nums[mid] < nums[i] && target < nums[mid])
j = mid;
else
i = mid;
}
}

return -1;
}

int BinarySearch(vector<int>& nums, int start, int end, int target)//二分查找算法
{
int mid = start;
while(start <= end)
{
mid = (start+end)/2;
if(target == nums[mid])
return mid;
if(mid == start)
{
start++;
continue;
}
if(nums[mid] > target)
end = mid;
else
start = mid;
}

return -1;
}
};


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