原题网址:https://www.lintcode.com/problem/classical-binary-search/description
描述
在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1
您在真实的面试中是否遇到过这个题?
样例
给出数组 [1, 2, 2, 4, 5, 5]
.
- 对于 target =
2
, 返回 1 或者 2. - 对于 target =
5
, 返回 4 或者 5. - 对于 target =
6
, 返回 -1.
挑战
O(logn) 的时间
AC代码:
class Solution {
public:
/**
* @param A an integer array sorted in ascending order
* @param target an integer
* @return an integer
*/
int findPosition(vector<int>& A, int target) {
// Write your code here
if(A.empty())
return -1;
int index1=0,index2=A.size()-1,mid=0;
while(index1<=index2)
{
mid=(index1+index2)/2;
if(A[mid]==target)
return mid;
if(A[mid]>target)
index2=mid-1;
if(A[mid]<target)
index1=mid+1;
}
return -1;
}
};