题解 | #二分查找-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) { // write code here int size=nums.size(); if(size==0){ return -1; } //取数组中的长度-1,二分法右边的元素 int num=size-1; //二分法左边的元素 int p=0; //左右两数的中间的位置 int mid; //循环条件当左位置小于右位置 while(p<=num){ mid=(p+num)/2; //中间位置等于所求 if(nums[mid]==target){ return mid; } //当位置元素小于所求左元素向右移 if(nums[mid]<target){ p=mid+1; } //当位置元素大于所求左元素向左移 else{ num=mid-1; } } //如果没有找到返回-1 return -1; } };