题目
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 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] <= 104
-
nums
为 无重复元素 的 升序 排列数组 -104 <= target <= 104
文章来源:https://www.toymoban.com/news/detail-647377.html
代码
采用二分法文章来源地址https://www.toymoban.com/news/detail-647377.html
#include<stdio.h>
#include<stdlib.h>
int searchInsert(int* nums, int numsSize, int target);
int main()
{
int nums[5]={1,3,5,6};
int target = 2;
printf("%d",searchInsert(nums,5,target));
return 0;
}
int searchInsert(int* nums, int numsSize, int target)
{
int low=0,high=numsSize-1;
int mid=numsSize;
if(numsSize==0)
return 0;
while(low<=high)
{
mid=(high+low)/2;
if(nums[mid]>target)
{
high=mid-1;
}else if(nums[mid]<target)
{
low=mid+1;
}else return mid;
}
if(nums[mid]!=target)
{
int i;
for(i=0;i<numsSize&&nums[i]<target;i++);
mid=i;
}
return mid;
}
到了这里,关于LeetCode 35题:搜索插入位置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!