![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
文章平均质量分 62
数据结构与算法
DEDSEC_Roger
语音算法,说话人识别,Python,C++。
展开
-
KMP算法总结
要在文本串 text 中找出第一次出现模式串 pattern 的下标,即文本查找,可以用KMP算法先看一个例子:如果要进行暴力匹配,可以用双指针法"""双指针法, t_idx=0, p_idx=0- 当 t_idx原创 2024-01-26 00:08:30 · 432 阅读 · 0 评论 -
二叉树总结
本文是二叉树的大总结,二叉树和链表都是特殊的数据结构,题目问到这两种结构,基本套路就这么多链表可参考链表LeetCode总结本文尽可能采用迭代法,便于理解二叉树节点结构体要会背int val;TreeNode(按照解法来分类讲解110.平衡二叉树本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。"""后序遍历- 当前节点的高度=1+max(左子树高度,左子树高度)- 为了定位左右子树, 需要记录左右子树的节点个数 cnt- 访问。原创 2023-04-09 20:09:35 · 532 阅读 · 1 评论 -
双指针法(快慢指针和对撞指针)总结
双指针法的题目非常多,主要分为快慢指针和对撞指针,通常能够将On2O(n^2)On2的时间复杂度,变为OnO(n)On的时间复杂度,且空间复杂度为O1O(1)O1,因此面试考察概率大上述链表相关的题目,206、19、02.07、142,可参考链表LeetCode总结。原创 2023-03-21 22:38:57 · 247 阅读 · 0 评论 -
链表LeetCode总结
链表题目需要注意的点ListNode结构体要会背int val;} };// 结尾记得加分号先判断head节点是否为nullptr,再进入下一步有效性判断:要对cur取next,就要先判断cur是否为nullptr,再取next善用dummy哨兵节点和pre指针使用pre,cur,next,next2指代已有节点,使用temp指代新建节点一轮处理完后,更新指针基本处理模板if(!cur = next;链表题目常用方法与概念快慢指针,注意有效性判断。原创 2023-03-12 23:10:20 · 122 阅读 · 0 评论 -
二分查找创新性总结
二分查找适用范围可随机访问的数据结构数据已经有序要查找的值只有一个上述的前四题都可直接使用二分查找,第五题要求查找上限和下限,可以通过两个二分查找实现二分查找易错点容易导致重复递归边界条件不容易确定本文的创新在于:将二分查找作为一个限定范围的工具,不要求二分查找直接给出结果,而是将结果范围限制在三个值中,然后对三个值进行判断,从而无需考虑边界条件,大大降低思考难度。原创 2023-03-12 21:49:17 · 665 阅读 · 0 评论 -
RMB类 SCUT OJ
定义人民币RMB类,该类的数据成员包括 int yuan(元)、int jiao(角)、int fen(分)、bool mark(标志,表示正负数)。RMB类的构造函数至少包含两种,即使用(元、角、分、标志)或者使用double类型数据来构造RMB类。以下是main函数的代码,请根据main函数的需要补充RMB类的定义。根据main函数代码,给出RMB类加减的结果;结果以浮点数输出,保留两位小数;原创 2022-11-29 14:33:50 · 906 阅读 · 0 评论 -
范围查询(Range) 数据结构(上) Tsinghua OJ PA1
范围查询(Range)描述数轴上有n个点,对于任一闭区间 [a, b],试计算落在其内的点数。输入第一行包括两个整数:点的总数n,查询的次数m。第二行包含n个数,为各个点的坐标。以下m行,各包含两个整数:查询区间的左、右边界a和b。输出对每次查询,输出落在闭区间[a, b]内点的个数。ExampleInput5 21 3 7 9 114 67 12Output03限制0 ≤ n, m ≤ 5×105对于每次查询的区间[a, b],都有a ≤ b各点的坐标互异各原创 2021-10-06 16:03:43 · 762 阅读 · 0 评论 -
旅行商(TSP) 数据结构(上) Tsinghua OJ PA2
旅行商(TSP)描述Shrek是一个大山里的邮递员,每天负责给所在地区的n个村庄派发信件。但杯具的是,由于道路狭窄,年久失修,村庄间的道路都只能单向通过,甚至有些村庄无法从任意一个村庄到达。这样我们只能希望尽可能多的村庄可以收到投递的信件。Shrek希望知道如何选定一个村庄A作为起点(我们将他空投到该村庄),依次经过尽可能多的村庄,路途中的每个村庄都经过仅一次,最终到达终点村庄B,完成整个送信过程。这个任务交给你来完成。输入第一行包括两个整数n,m,分别表示村庄的个数以及可以通行的道路的数目。以原创 2021-10-05 22:30:43 · 545 阅读 · 0 评论 -
真二叉树重构(Proper Rebuild) 数据结构(上) Tsinghua OJ PA2
真二叉树重构(Proper Rebuild)描述一般来说,给定二叉树的先序遍历序列和后序遍历序列,并不能确定唯一确定该二叉树。(图一)比如图一中的两棵二叉树,虽然它们是不同二叉树,但是它们的先序、后序遍历序列都是相同的。但是对于“真二叉树”(每个内部节点都有两个孩子的二叉树),给定它的先序、后序遍历序列足以完全确定它的结构。将二叉树的n个节点用[1, n]内的整数进行编号,输入一棵真二叉树的先序、后序遍历序列,请输出它的中序遍历序列。输入第一行为一个整数n,即二叉树中节点的个数。第二、三原创 2021-10-05 15:41:21 · 325 阅读 · 0 评论 -
列车调度(Train) 数据结构(上) Tsinghua OJ PA2
列车调度(Train)描述某列车调度站的铁道联接结构如Figure 1所示。其中,A为入口,B为出口,S为中转盲端。所有铁道均为单轨单向式:列车行驶的方向只能是从A到S,再从S到B;另外,不允许超车。因为车厢可在S中驻留,所以它们从B端驶出的次序,可能与从A端驶入的次序不同。不过S的容量有限,同时驻留的车厢不得超过m节。设某列车由编号依次为{1, 2, …, n}的n节车厢组成。调度员希望知道,按照以上交通规则,这些车厢能否以{a1, a2, …, an}的次序,重新排列后从B端驶出。如果可行,应原创 2021-10-03 23:12:35 · 421 阅读 · 0 评论