欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode--35. 搜索插入位置(C)

程序员文章站 2022-06-03 11:25:25
...

1. 题目描述

难度:简单
LeetCode--35. 搜索插入位置(C)

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

运行结果为:
LeetCode--35. 搜索插入位置(C)

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

运行结果为:
LeetCode--35. 搜索插入位置(C)

相关标签: # •Array