leetcode链接:搜索插入位置
ps:
题目给的是一个有序的数组,所以采用二分查找算法最优,只需要计算出如果目标值不存在则返回按顺序插入的位置,其实刚好是 left
位置。
代码:
int searchInsert(int* nums, int numsSize, int target){
// 二分
int left = 0;
int right = numsSize - 1;
while (left <= right) {
int midIndex = left + ((right - left) >> 1);
if (nums[midIndex] > target) {
right = midIndex - 1;
} else if (nums[midIndex] < target) {
left = midIndex + 1;
} else {
return midIndex;
}
}
return left;
}