1. 题目描述
2. 解题思路
使用双指针算法,因为它是有序的,我们直接判断数组最中间的值,进行比较,如果大于目标值,说明结果在数组的左半区间,那么我们之间将左半区间当成一个完整的数组,这样我们一次就可以排除一半的数据。右半区间同理。
3. 代码实现
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @param target int整型
* @return int整型
*/
int search(vector<int>& nums, int target)
{
if(nums.size() == 0) return -1;
int left = 0, right = nums.size() - 1;
while(left <= right)
{
int mid = left + (right - left) / 2;
if(nums[mid] < target)
{
left = mid + 1;
}
else if(nums[mid] > target)
{
right = mid - 1;
}
else
{
return mid;
}
}
return -1;
}
};