题解 | #二分查找-I#
二分查找-I
https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param target int整型 * @return int整型 */ int search(vector<int>& nums, int target) { // 如果数组内没有元素,直接返回-1 if(nums.size()==0){ return -1; } //规定左边界和右边界 int r=nums.size(),l=0; //写循环,当左右边界重合的时候就是找到答案的时候 while(r>=l){ //查找中间位置 int mid = (r+l)/2; //用中间位置和目标值比较,以此实现二分 if(target>nums[mid]){ //如果目标值比中间位置大,左边界收缩 l+=1; } else if(target<nums[mid]){ //以此类推 r-=1; } //如果刚好相等,那么找到答案了,mid就是目标值的位置 else{ return mid; } } return -1; } };