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 } };