给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 $O(log n)$ 的算法。
利用双指针,从开头结尾同时查找。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| class Solution { public: int searchInsert(vector<int>& nums, int target) { int l=0,r=nums.size()-1; while(l<=r) { int mid=l+((r-l)>>1); if(nums[mid]>target) r=mid-1; else if(nums[mid]<target) l=mid+1; else return mid; } return l; } };
|