题解 | 二分查找-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) { //别忘了首先排除空数组 if (nums.empty()) { return -1; } // write code here int len = nums.size(); int lower = 0; int upper = len - 1; int indexCurr = len / 2; while (target != nums[indexCurr]) { if (nums[indexCurr] > target) { upper = indexCurr; //判断上下界举例是否小于1 if (upper - lower > 1) { indexCurr = upper - (upper - lower) / 2; } else { indexCurr = upper - 1; //数组没有找到的情况 if (nums[indexCurr] != target) { return -1; } } } else { lower = indexCurr; if (upper - lower > 1) { indexCurr = lower + (upper - lower) / 2; } else { indexCurr = lower + 1; //数组没有找到的情况 if (nums[indexCurr] != target) { return -1; } } } } return indexCurr; } };