【LeetCode】搜索插入位置

【题目】:搜索插入位置。(使用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是按什么编译器编译的,暂时不知道原因,如果有知道的小伙伴知道,请评论区留言下,谢谢。

    推荐阅读