/*
问题描述:在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1
来源:LintCode
日期:2017-6-25
作者:syt
问题描述:在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1
来源:LintCode
日期:2017-6-25
作者:syt
*/
#include <iostream>
#include <vector>
using namespace std;
class ClassTwoSearch{
public:
/**
* @param A an integer array sorted in ascending order
* @param target an integer
* @return an integer
*/
int findPosition1(vector<int>& A, int target) {
// Write your code here
int res = -1;
for (int i = 0; i < A.size(); i++)
{
if (A[i] == target)
{
res = i;
break;
}
}
return res;
}
int findPosition2(vector<int>& A, int target) {
// Write your code here
int res = -1;
if (A.size() == 0)
return res;
int begin = 0, end = A.size() - 1;
int mid = (begin + end) / 2;
while (begin < end && A[mid] != target)
{
if (A[mid] < target)
begin = mid + 1;
if (A[mid] > target)
end = mid - 1;
mid = (begin + end) / 2;
}
if (A[mid] != target)
res = -1;
else
res = mid;
return res;
}
};