给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为
O(log n)的算法。示例 1:
输入:nums = [1,3,5,6], target = 5输出:2示例 2:
输入:nums = [1,3,5,6], target = 2输出:1示例 3:
输入:nums = [1,3,5,6], target = 7输出:4提示:
1 <= nums.length <= 104-104 <= nums[i] <= 104nums为无重复元素的升序排列数组-104 <= target <= 104
class Solution { public: int searchInsert(vector<int>& nums, int target) { int l=0,r=nums.size()-1; while(l<r) { int mid=(l+r)/2; if(nums[mid]<target) { l=mid+1; }else{ r=mid; } } if(nums[r]<target) return nums.size(); return l; } };