摘要: 一、深搜简介 深搜主要使用的是递归的方式,从一个点开始不断往里搜索也就是递归中的递,当遇到不符合条件的或者目标对象时候就进行归。 主要用与遍历或树和图的搜索算法,在这个过程中我们同样可以使用栈来解决。粗略的理解就是一条路走到黑。 1.原理 图示: 上图演示了在树中查找数字5的过程,可以明显的看到,它 阅读全文
posted @ 2024-03-13 14:56 clinx000 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 一、指针的定义 指针是C语言的灵魂,数据结构的基础。 首先我们给出指针的官方定义:指针(英语:Pointer),是在许多编程语言中用来存储内存地址的变量。 简化一下,指针是变量,它是表示内存地址的。类比一下int,我们知道int表示的是整型,char表示的是字符型,那么指针就是表示的是内存型。 我们 阅读全文
posted @ 2024-01-02 18:10 clinx000 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 一、差分定义和性质 首先差分主要是针对一个数组中的元素进行频繁的增加或删除。假设现在有一个数组nums,现在我要对里面的某个区间的元素全部加2, 然后要对另外一个区间全部减1。一般的思路是直接for循环进行遍历,这样的话时间复杂度是O(n),而我们使用差分数组的话时间复杂度为O(1)。 对于一个数组 阅读全文
posted @ 2023-12-04 15:56 clinx000 阅读(444) 评论(0) 推荐(0) 编辑
摘要: 一、广搜介绍 广度优先搜索是一种暴力算法,通过遍历一整张图来找寻结果。一般是使用队列来实现 1.原理 首先我们将根节点加入队列,然后遍历这个节点的全部方向,如果有满足条件的节点出现,就将其加入队列。 在全部方向遍历完之后,我们将遍历的节点出队列。然后接着重复上述的操作,直到队列为空,也就代表着图遍历 阅读全文
posted @ 2023-11-30 20:11 clinx000 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 一、冒泡排序介绍 冒泡排序一般来说是我们最早接触到的排序算法,它的核心思想就是“比较大小,交换数字”,时间复杂度为O(n2)。 它的实现过程也非常的简单,只需要掌握循环以及判断语句的使用就可以实现。 二、实现以及详解 先展示一下代码: //定义一个arr数组并赋值 int arr[9] = {1, 阅读全文
posted @ 2023-11-29 20:07 clinx000 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 一、deque介绍 deque(双端队列)是一种索引容器,它包含在#include<deque>头文件中。它与普通的queue队列不同的是,deque可以实现在尾部插入和删除元素。 随机的访问双端队列中的元素,时间复杂度为O(1) 在首部或者尾部插入或删除元素,时间复杂度O(1) 插入和删除元素,是 阅读全文
posted @ 2023-11-28 21:15 clinx000 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 一、单调栈简介 单调栈(Monotone Stack),拆分一下“单调”,“栈”。也就是说它是在栈的基础之上在多加了一条“单调”的性质。 一般来说有单调增加,单调递减两种方式,也就是说从栈顶到栈底,里面的元素是按照一定顺序来排列的。 它的时间复杂度为O(n)。 二、单调递增栈 只有比栈顶元素小的元素 阅读全文
posted @ 2023-11-27 18:42 clinx000 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 一、vector介绍 vector是一个序列容器模板类,它包含在#include<vecor>头文件中,在cppreference中std::vecotr是一个封装动态大小的序列容器,从定义中我们能知道几个关键词,“动态”,“序列”,“容器”。 1.动态代表着vector的存储是自动处理的,可以根据 阅读全文
posted @ 2023-11-26 16:26 clinx000 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 一、什么是有向无环图(DGA) 首先我们需要知道怎样才算一个图,这里的图指的是离散数学中的图。在我们的认知中,两点可以确定一条直线,多条直线就能组成一张图。 当我们用集合来表示的时候,图就是由点的有穷非空集合以及线的集合所组成。在离散数学中,图是用于表示物体与物体之间关系的一种结构, 然后呢,将物体 阅读全文
posted @ 2023-11-25 19:16 clinx000 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 一、拓扑排序介绍 拓扑排序是对有向无环图(DAG)中的节点进行排序的一种算法。它的核心就是思想是通过寻找入度(指向该节点的边的数量)为0的节点,从而遵循有向图的前后依赖关系,构建一个有序的节点序列。 二、拓扑排序的操作 1.根据实际的问题构建一个有向无环图 2.统计每个节点的入度,将依赖关系表示为有 阅读全文
posted @ 2023-11-21 19:03 clinx000 阅读(71) 评论(0) 推荐(0) 编辑