【题目】:搜索插入位置。(使用C语言和C++两钟写法实现)给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
- 示例 1:
输入: [1,3,5,6], 5
输出: 2
- 示例 2:
【【LeetCode】搜索插入位置】输入: [1,3,5,6], 2
输出: 1
- 示例 3:
输入: [1,3,5,6], 7
输出: 4
- 示例 4:
输入: [1,3,5,6], 0
输出: 0
通过上面的四个例子,题目的要求已经很明朗了,说简单点,这就是遍历数组找对应的值,如果没有就插入,当然,找到了要返回对应索引,插入了也要返回插入的索引。C语言版
暴力法
int searchInsert(int* nums, int numsSize, int target)
{
for(int i = 0;
i < numsSize;
i++)
{
if(target <= nums[i])
{
return i;
}
}
return numsSize;
}
C++版
二分法
class Solution
{
public:
int searchInsert(vector& nums, int target)
{
int size = nums.size();
int left = 0;
int right = size;
while(left <= right)
{
int mid = (left + right) / 2;
if(target == nums[mid])
{
return mid;
}
else if(target > nums[mid])
{
left = mid + 1;
}
else if(target < nums[mid])
{
right = mid - 1;
}
}
return left;
}};
LeetCode代码提交有点问题,二分法这个提交报错,但是vs上面测试是没有问题的。没搞懂LeetCode是按什么编译器编译的,暂时不知道原因,如果有知道的小伙伴知道,请评论区留言下,谢谢。