LeetCode--35. 搜索插入位置(遍历,二分法)

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;
}

运行结果为:
在这里插入图片描述

发布了163 篇原创文章 · 获赞 188 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_42580947/article/details/104733067