一:问题描述:
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。
二:思路以及代码:
int searchInsert(int* nums, int numsSize, int target){
int i=0,j=0;
for(i=0;i<numsSize;i++)
{
if(nums[0]>target)
{
return 0;//如果要查找的数比所有的数都小,那么插在最前面,也就是数组第0的位置
}
if(nums[i]<target)
{
j=i;//如果在数组中无法找到该数,则要插在比target的数小的后面。因此时刻记录target可能插入的位置。
}
if(nums[i]==target)
{
return i;//找到target则返回数组下标
}
}
return j+1;//没有找到则返回target应该插入的位置,即j+1.
}
三:测试结果: