【算法题】23.搜索插入位置
2022-03-06 本文已影响0人
_涼城
题目
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 的算法。
示例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
示例 4
输入: nums =
[1,3,5,6]
, target = 0
输出: 0
示例 5
输入: nums =
[1]
, target = 0
输出: 0
思路
二分查找,假设插入位置变量 pos
,则
代码实现
int searchInsert(int* nums, int numsSize, int target){
int left,right,pos;
left = 0;
pos = numsSize;
right = numsSize - 1;
while(left<=right) {
int middle = (left+right)/2;
if(nums[middle] > target) {
ans = middle;
right = middle-1;
}
else if(nums[middle] < target) {
left = middle+1;
}
else if(nums[middle] == target){
return middle;
}
}
return pos;
}