☆打卡算法☆LeetCode 35、搜索插入位置 算法解析

简介: “给定一个排序好的整数数组和一个目标值,在数组中找到目标值,返回其索引。如果目标值不存在数组中,就将目标值插入数组中按顺序的正确位置中。”

一、题目


1、算法题目

“给定一个排序好的整数数组和一个目标值,在数组中找到目标值,返回其索引。如果目标值不存在数组中,就将目标值插入数组中按顺序的正确位置中。”

题目链接:

来源:力扣(LeetCode)

链接:35. 搜索插入位置 - 力扣(LeetCode) (leetcode-cn.com)


2、题目描述

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

示例 1:
输入: nums = [1,3,5,6], target = 5
输出: 2
复制代码
示例 2:
输入: nums = [1,3,5,6], target = 2
输出: 1
复制代码


二、解题


1、思路分析

这个题的意思是找到排序数组中是否存在一个目标值,那么首先会想到的就是使用二分法在O(log n)的时间内找到是否存在目标值。

但这题还有额外的条件,就是数组中不存在目标值的话,返回按顺序插入的位置。

接着就是找到大于等于target的下标。


2、代码实现

代码参考:

public class Solution {
    public int SearchInsert(int[] nums, int target) {
        int low = 0;
        int high = nums.Length - 1;
        int mid = 0;
        while (low <= high)
        {
            mid = (low + high) / 2;
            if (target == nums[mid]) return mid;
            else if (target > nums[mid]) low = mid + 1;
            else high = mid - 1;
        }
        if (target > nums[mid]) return mid + 1;
        else return mid;
    }
}
复制代码

网络异常,图片无法展示
|


3、时间复杂度

时间复杂度 : O(log n)

其中n为nums数组的大小,时间复杂度为二分查找的时间复杂度O(log n)

空间复杂度: O(1)

只需要常数级别的空间存放变量。


三、总结

二分查找的思路不难理解,但是边界条件容易出错。

比如 循环结束条件中 left 和 right 的关系,更新 left 和 right 位置时要不要加 1 减 1。

设置数组长度可以忽略边界条件的判断,因为存在一种情况是target大于数组中的所有数,此时需要插入到数组长度的位置。



相关文章
|
3天前
|
机器学习/深度学习 存储 人工智能
图搜索算法详解
【5月更文挑战第11天】本文介绍了图搜索算法的基础知识,包括深度优先搜索(DFS)、广度优先搜索(BFS)和启发式搜索(如A*算法)。讨论了图搜索中的常见问题、易错点及避免方法,并提供了BFS和A*的Python代码示例。文章强调了正确标记节点、边界条件检查、测试与调试以及选择合适搜索策略的重要性。最后,提到了图搜索在路径规划、游戏AI和网络路由等领域的应用,并概述了性能优化策略。
13 3
|
5天前
|
机器学习/深度学习 存储 算法
数据结构与算法 动态规划(启发式搜索、遗传算法、强化学习待完善)
数据结构与算法 动态规划(启发式搜索、遗传算法、强化学习待完善)
11 1
|
5天前
|
算法 搜索推荐 索引
数据结构与算法 搜索(下)
数据结构与算法 搜索(下)
8 0
|
5天前
|
缓存 算法 搜索推荐
数据结构与算法 搜索(上)
数据结构与算法 搜索(上)
9 1
|
5天前
|
数据采集 存储 算法
数据结构与算法 搜索
数据结构与算法 搜索
7 1
|
12天前
|
机器学习/深度学习 存储 人工智能
【AI 初识】人工智能中使用了哪些不同的搜索算法?
【5月更文挑战第2天】【AI 初识】人工智能中使用了哪些不同的搜索算法?
|
15天前
|
算法 搜索推荐 Java
图搜索算法详解
图搜索算法是用于在图结构中寻找特定节点或路径的算法。图是由节点(或顶点)和边组成的集合,节点代表对象,边代表节点之间的连接。图搜索算法广泛应用于各种领域,比如网络路由、社交媒体分析、推荐系统等。 V哥最近总是在多个地方都看到关于图搜索算法的讨论
|
15天前
|
存储 机器学习/深度学习 算法
|
17天前
|
机器学习/深度学习 数据采集 人工智能
【热门话题】AI作画算法原理解析
本文解析了AI作画算法的原理,介绍了基于机器学习和深度学习的CNNs及GANs在艺术创作中的应用。从数据预处理到模型训练、优化,再到风格迁移、图像合成等实际应用,阐述了AI如何生成艺术作品。同时,文章指出未来发展中面临的版权、伦理等问题,强调理解这些算法对于探索艺术新境地的重要性。
30 3
|
19天前
|
存储 算法 安全

推荐镜像

更多