二分查找
题目:
给定一个整型有序数组nums和一个目标之target,写一个搜索函数搜索target,如果存在则返回target在数组中的下下标,如果target不存在,返回-1。
代码
思路:
- 采取闭区间[left,right]写法
- while (left <= right) 要使用 <= ,因为left == right是有意义的,所以使用 <=
- if (nums[middle] > target) right 要赋值为 middle - 1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束下标位置就是 middle - 1
复杂度:
- 时间复杂度:O(log n)
- 空间复杂度:O(1)
1 | int search::solution(vector<int>&nums,int target) |