随笔分类 -  算法基础

摘要:这里介绍树和图的广度优先搜索,我们要去找到那个到n最近的点,这是最短路问题,当然我们要使用BFS方式来解决这个问题 我们可以因为发现这道题的数据很小,所以我们如果遍历这个图的所有点也是很小的,所以我们利用BFS,去遍历每一个点,然后就是很平常的BFS操作,就无需多讲了,如果数据范围大了一点,我们也可 阅读全文

posted @ 2022-03-15 19:31 ZheyuHarry 阅读(59) 评论(0) 推荐(1)

摘要:这里紧承DFS和BFS之后,引出了更加普遍的关于树和图的深度优先搜索和广度优先搜索,在我看来关于树和图的深搜和广搜和前面的深搜和广搜的关系就像是,前者给你一片有限制的空间,你可以往任何地方走,但是你有可能陷入泥潭,此时就需要回溯,我们对于所给定区域的结构是已知的,但我们在走的时候还是义无反顾地去走, 阅读全文

posted @ 2022-03-15 17:38 ZheyuHarry 阅读(131) 评论(0) 推荐(1)

摘要:这里要介绍的广度优先搜索也是搜索算法的一种,但是这个和刚刚讲到的深度优先搜索有点不一样的地方在于,深度优先搜索是一次走到底,撞了南墙才回头,而广度优先搜索是每次每个方向都走一步,然后保存起来以便之后在此基础上走。 所以这里很必要的是定义一个新的数据结构,通常是pair来存储当前问题空间的状态,然后把 阅读全文

posted @ 2022-03-13 20:38 ZheyuHarry 阅读(62) 评论(0) 推荐(1)

摘要:这里涉及到的知识是属于搜索问题,我们这里的DFS(Depth-First—Search),即深度优先搜索; 这个讨论的是图论的问题,图论的问题是关于边和点的关系 怎么考虑深度优先搜索呢,就是从起点往相邻的节点去走,边界条件是走到了目标节点后退出,搜索的方式是从一条路走到底,如果还是没有找到目标节点那 阅读全文

posted @ 2022-03-13 20:20 ZheyuHarry 阅读(87) 评论(0) 推荐(1)

摘要:什么是堆排序呢,这里大概讲讲…… 我们在这里讲到的堆,一般是二叉堆,也就是完全二叉树或者近似完全二叉树的一个数据结构。 如果说每个节点的值都大于他的任意子节点的值就叫做大根堆,反之称作小根堆。 我们通常是通过利用一个一维数组来存储一个堆的,如果说起点是从0开始,那么其左子节点就是2i+1,右子节点就 阅读全文

posted @ 2022-03-13 17:52 ZheyuHarry 阅读(55) 评论(0) 推荐(1)

摘要:今天要介绍的是yxc都说是特别牛逼的一种算法,对于处理字符串问题十分的有用! 我们先大概的简介一下这个算法,我们在之前的普通哈希中我们已经知道哈希是需要定义一个哈希函数来使一个比较大的值域映射到一个较小的区间中,但是有可能有多个值映射到同一个值上,所以我们为了处理这样的冲突,我们分别创造了开放寻址法 阅读全文

posted @ 2022-03-10 15:31 ZheyuHarry 阅读(232) 评论(0) 推荐(1)

摘要:这里将会引入一种哈希表的数据结构,粗看之下我们会觉得这个的形式特别像我们之前学过的离散化,就是将一个极大的值域映射到一个相对小的空间中以便我们的查询和删除。但是值得注意的是,离散化保序而哈希表不保序。就比如我们之前学到的离散化的求区间和,这个是需要保存其序列的,我们是对应的去求其某一段范围之内的和, 阅读全文

posted @ 2022-03-09 20:13 ZheyuHarry 阅读(54) 评论(0) 推荐(1)

摘要:并查集被很多OIer认为是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作: 合并(Union):把两个不相交的集合合并为一个集合。 查询(Find):查询两个元素是否在同一个集合中。 当然,这样的定义未免太过学术化,看完后恐怕不太能理解它具体有什 阅读全文

posted @ 2022-02-28 22:17 ZheyuHarry 阅读(37) 评论(0) 推荐(0)

摘要:字典树(Trie)是一个比较简单的数据结构,也叫前缀树,用来存储和查询字符串。 具体是以怎样的存储方式呢,如图: 我们可以发现,正如其别名前缀树一样,具有相同前缀的字符串共享同一个树枝干,直到不同的地方才会分开来 具体对这个字典树的讲解,我们便分析板子边考虑: 835. Trie字符串统计 - Ac 阅读全文

posted @ 2022-02-27 23:17 ZheyuHarry 阅读(55) 评论(0) 推荐(0)

摘要:我们在前面已经用数组模拟过栈和队列去执行一些基本操作了,然后呢,我们这里引入单调栈和单调队列的概念 单调栈和单调队列顾名思义我们知道这个栈和这个队列中的元素是单调递增(递减)的,那么这些具体能用来处理哪些问题呢? 单调栈的应用:单调栈则主要用于 解决NGE问题(Next Greater Elemen 阅读全文

posted @ 2022-02-26 23:04 ZheyuHarry 阅读(92) 评论(0) 推荐(0)

摘要:KMP算法是一种用于字符串匹配的算法,我们在介绍KMP算法之前,我们先介绍一下字符串匹配的朴素算法: 题目:有长度为N的字符串P , 长度为M的字符串S , 问 P在S中匹配项的起始位置: 双重循环,遍历S数组,每遇到一个新的S[i] 就要从 P[1]重新开始判断是否匹配,相当于一层一层的往后靠:’ 阅读全文

posted @ 2022-02-25 22:15 ZheyuHarry 阅读(50) 评论(0) 推荐(0)

摘要://请注意,从这里开始讲的数据结构更多的是为了理解算法而存在的,可能讲的不是很完整 链表是一种比较特殊的数据结构,就像一条锁链一样链接起来。 通常,我们会把链表用一个结构体+指针的方式来存储数据, new的底层涉及内存分配,调用构造函数,指针转换等多种复杂且费时的操作。一秒大概能new1w次左右。 阅读全文

posted @ 2022-02-22 17:32 ZheyuHarry 阅读(108) 评论(0) 推荐(0)

摘要:离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。 离散化是程序设计中一个常用的技巧,它可以有效的降低时间复杂度。其基本思想就是在众多可能的情况中,只考虑需要用的值。离散化可以改进一个低效的算法,甚至实现根本不可能实现的算法。要掌握这个思想,必须从大量的题目中理解此方法的特 阅读全文

posted @ 2022-02-22 10:11 ZheyuHarry 阅读(59) 评论(0) 推荐(0)

摘要:我们将要引入一个双指针算法,我们考虑为什么要引入双指针算法呢,以及双指针算法究竟能为我们解决什么样的问题? 通常,我们会处理到有些问题需要遍历某个序列,但根据题意我们并不需要重复判断某些过程,所以我们会利用双指针算法来取代朴素算法。将时间复杂度为O(n^2)的算法优化到O(n),就是可以不需要重复遍 阅读全文

posted @ 2022-02-19 11:05 ZheyuHarry 阅读(100) 评论(0) 推荐(0)

摘要:差分和前缀和其实是一对逆操作,这里将会对前缀和和差分是怎么实施的,如何理解,以及对应一维和二维数组的情况。 前缀和:换言之,就是前n项和,也就是高中学习数列时的Sn; Sn = a1+a2+……an; Sn+1 = a1+a2+……an+an+1 = Sn+an+1; 应用:如果要求从l到r的数字之 阅读全文

posted @ 2022-02-16 11:47 ZheyuHarry 阅读(212) 评论(0) 推荐(0)

摘要:通常,我们在处理问题的时候,很多的数据并不像我们所熟知的int 和long long一样,很容易的能被表达出来。特别是我们现在这个答案数据的时代,我们时常会遇见很多高精度的数据,有时要对它们进行操作就会很困难。 于是乎,我们引入了高精度算法: 我们先总结一下高精度算法的一些特性: ·首先高精度计算, 阅读全文

posted @ 2022-02-15 15:57 ZheyuHarry 阅读(109) 评论(0) 推荐(0)

摘要:今天要介绍的是一种比较常见但是效率很高的算法,就是二分法。因为二分法有着O(logn)的优秀时间复杂度,所以我们常常会用到它。 但是呢二分主要是运用于已经排好序了的序列,通常我们知道一个答案区间,然后二分的去寻找符合题意的answer;或者我们已知一个序列,我们要通过二分的方法去寻找它的位置,或者说 阅读全文

posted @ 2022-02-13 19:12 ZheyuHarry 阅读(342) 评论(0) 推荐(0)

摘要:在之前我们介绍了快速排序那种优美的算法,今天又要介绍一种新的排序算法,归并排序。 归并排序的核心思想其实还是分治,我们先分成若干个子问题,然后递归处理这些子问题,然后合并之即可,一下是具体的思路: 我们首先把这个序列等分为left和right,然后同样的递归处理左右两边的序列,当我们把子序列排序好之 阅读全文

posted @ 2022-02-11 14:01 ZheyuHarry 阅读(51) 评论(0) 推荐(0)

摘要:我们时常需要对数据进行排序,这里我们先引入一个比较简单的快速排序,其时间复杂度为O(nlogn),接下来介绍其思路: 我们首先需要知道的是,快速排序的思想是分治,我们是把问题一个个的区分为两个或多个的子问题,然后递归地处理它,最后合并子问题即可,所以在这里我们也是一样,我们找到一个参考数x,把x小的 阅读全文

posted @ 2022-02-10 21:34 ZheyuHarry 阅读(52) 评论(0) 推荐(0)