问题描述:
要求给定一个已排序数组,以及一个目标值,如果数组中存在目标值,则返回第一次出现目标值的位置,否则返回应当插入数组中的哪个位置。
题目指示不会出现重复数在数组中,因此使用了二分查找法
int searchInsert(vector<int>& nums, int target) {
int low = 0, high = nums.size()-1;
// Invariant: the desired index is between [low, high+1]
while (low <= high) {
int mid = low + (high-low)/2;
if (nums[mid] < target)
low = mid+1;
else
high = mid-1;
}
return low;
}