在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1
您在真实的面试中是否遇到过这个题?
Yes
样例
�给出数组 [1, 2, 2, 4, 5, 5].
对于 target = 2, �返回 1 或者 2.
对于 target = 5, �返回 4 或者 5.
对于 target = 6, �返回 -1.
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.size() == 0) {
return -1;
}
int begin = 0;
int end = A.size() - 1;
while (begin < end) {
int mid = begin + (end - begin) / 2;
if (A[mid] == target) {
return mid;
}
else if (A[mid] < target) {
begin = mid + 1;
end = end;
continue;
}
else {
end= mid - 1;
begin = begin;
continue;
}
}
if (A[begin] == target) {
return begin;
}
if (A[end] == target) {
return end;
}
return -1;
}
};