LeetCode--35. 搜索插入位置(C)
程序员文章站
2022-06-03 11:25:25
...
1. 题目描述
难度:简单
2. 题目分析
这道题目比较简单,比较容易想到的就是遍历法,其实更快的方法是二分法:
-
遍历法
依次遍历数组中的元素,判断是否存在目标值,如果存在返回索引,否则返回大于目标值的第一个元素的索引。时间复杂度为O(n)。 -
二分法
利用二分法来搜索数组会缩短访问时间。时间复杂度为O(logn)。
3. C语言实现
3.1 遍历法
代码如下:
int searchInsert(int* nums, int numsSize, int target){
int i;
if(numsSize == 0) return 0;
for(i = 0; i < numsSize; i++){
if(nums[i] >= target)
return i;
}
return i;
}
运行结果为:
3.2 二分法
代码如下:
int searchInsert(int* nums, int numsSize, int target){
int i, left, right, mid;
left = 0;
right = numsSize - 1;
while(left <= right){
mid = (left + right)/2;
if(nums[mid] == target){
return mid;
}
else if(nums[mid] < target){
left = mid + 1;
}
else{
right = mid - 1;
}
}
return left;
}
运行结果为: