在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1。
样例:
给出数组 [1, 2, 2, 4, 5, 5].
对于 target = 2, 返回 1 或者 2.
对于 target = 5, 返回 4 或者 5.
对于 target = 6, 返回 -1.
挑战:
O(logn) 的时间
#ifndef C457_H
#define C457_H
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
/*
* @param nums: An integer array sorted in ascending order
* @param target: An integer
* @return: An integer
*/
int findPosition(vector<int> &nums, int target) {
// write your code here
if (nums.empty())
return -1;
int l = 0;
int r = nums.size() - 1;
while (l < r)
{
int mid = (l + r) / 2;
if (nums[mid] < target)
{
l = mid + 1;
}
else if (nums[mid]>target)
{
r = mid;
}
else
{
return mid;
break;
}
}
return -1;
}
};
#endif