class Solution {
public:
/**
* 二分查找
* @param nums int整型vector 数组
* @param x int整型 目标值
* @return int整型 目标值在数组中的下标,若不存在则返回-1
*/
int search(vector<int>& nums, int x)
{
int l=-1,r=nums.size();
// 在[l+1, r)区间内查找目标值
while(l+1<r)
{
int mid=(l+r)/2; // 计算中位数
if(nums[mid]<x)
l=mid; // 目标值在右边,缩小区间为[mid, r)
else
r=mid; // 目标值在左边,缩小区间为[l+1, mid)
}
if(r<nums.size()&&nums[r]==x)
return r; // 找到目标值,返回下标
else
return -1; // 没有找到目标值,返回-1
}
};

京公网安备 11010502036488号