
算法补天
文章平均质量分 77
dor.yang
你听过wish的故事吗?
展开
-
首次手撸迪杰斯特拉算法+对于特定情况下的调整优化+DFS(1003-Emergency)
这个可以说是,相当大的一道题了,首先,我们要一个点到另一个点的最短距离,而谈到这一点,迪杰斯特拉算法自然是第一选择,说来也是惭愧,我作为一名计算机本科生,上了三年了,之前遇到用迪杰斯特拉算法的地方很多,但是从来都是直接拿来主义,网上copy一个接口改改就直接用了,这回也算是心血来潮,想要手撸一回。......原创 2022-08-11 23:29:55 · 581 阅读 · 1 评论 -
算法补天系列之——中级提高班-2(树的递归,动态规划,调整遍历方向减少复杂度)
这个题的经典思路:从右上角去找,这个数如果大于他,因为知道下面的一定大,往左走,如果小于他,就知道左边的一定小于他,往下走。这个思路看完就能明白,我们的复杂度是m+n级别的,比遍历的m*n好多了。...原创 2022-08-06 19:52:44 · 158 阅读 · 0 评论 -
算法补天系列之中级提高班1
滑动窗口,很多O(N)的思路就是这么来得打表,简单格式的输入输出。预处理数组/结构,省重复连续遍历。原创 2022-08-04 22:29:36 · 157 阅读 · 0 评论 -
算法补天系列之有序表的四种实现方式——AVL树,SB树,红黑树,跳表(重点)介绍说明
平衡性标准每一个节点不是红,就是黑,规定头和叶子结点(这里有大病,他的叶子结点是没有孩子的节点往下一层的空的那一层)必须为黑,任何两个红节点不能相邻。SB树要求每一棵字树的大小,不小于自己兄弟节点的最大的孩子节点的子树的大小。•我们来看这个插入,首先,我们来到20,因为70没有这一层,所有内部下移到第四层,然后右移到50,然后继续下移,到70有的一层,插入进去。•假如说,我们又来了一个四,假如说4的层数是2.那我们就从最高层开始找,找完了发现4没有这一层,往下走,找到层数,大小都对的位置,插入。...原创 2022-08-01 18:13:18 · 629 阅读 · 0 评论 -
并查集介绍和基于并查集解决问题——LeetCode 952 按公因数计算最大组件大小
给定一个由不同正整数的组成的非空数组nums,考虑下面的图有nums.length个节点,按从nums[0]到nums[nums.length-1]标记;只有当nums[i]和nums[j]共用一个大于1的公因数时,nums[i]和nums[j]之间才有一条边。返回图中最大连通组件的大小。...原创 2022-07-30 15:03:00 · 328 阅读 · 0 评论 -
经典双栈实现队列,注意遍历栈的判定条件修改。
请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty)实现MyQueue类voidpush(intx)将元素x推到队列的末尾intpop()从队列的开头移除并返回元素intpeek()返回队列开头的元素booleanempty()如果队列为空,返回true;否则,返回false说明。...原创 2022-07-28 09:44:40 · 122 阅读 · 0 评论 -
算法补天系列之——KMP算法,即字符串匹配算法
什么是KMP呢? 我们有一个string1,又有一个string2,这个时候我们想知道string2是不是string1的子串。这就是KMP 首先我们说经典算法,其实时间复杂度是比较大的,一般就是O(n*m) 其实KMP的思路和经典暴力方法还是一样的,但是KMP有加速。...原创 2022-07-26 22:41:24 · 174 阅读 · 0 评论 -
算法补天系列之——暴力递归
首先补充一下之前的迪杰斯特拉算法,也可以用堆的形式来实现,不过这个是肯定不能用系统提供的堆来实现的,因为这里有一个新发现的更小的路径,要修改堆的数据。所以自己写堆的本领是必须要的,堆的底层结构是一个数组,然后最好我们设置一个node和数组位置的map、...原创 2022-07-22 19:47:46 · 609 阅读 · 0 评论 -
算法补天系列之——前缀树+贪心算法
经典的前缀树,字符都是在路上的,节点是为了边的存在而存在的,有路就可以复用。那么前缀树对应的数据结构是什么样的呢?对于节点构建结构,设置一个intpass(表示路径途径这个节点的次数),一个intend(表示路径在这个点结束了),其中边以一个【26】大小的数组存在,使得具备延伸出26条路径的潜力。那么我们知道了前缀树,我们怎么知道一个指定的字符串前缀树中有没有呢?那就是怎么加的怎么查,就是照着这个字符串,从头结点开始,走到最后一个,看end是不是>1,是就有,并且end就是出现的次数。反之没有。...原创 2022-07-21 18:06:43 · 335 阅读 · 0 评论 -
经典的拓扑排序问题——LeetCode207 课程表+LeetCode210 课程表II
你这个学期必须选修numCourses门课程,记为0到numCourses-1。在选修某些课程之前需要一些先修课程。先修课程按数组prerequisites给出,其中prerequisites[i]=[ai,bi],表示如果要学习课程ai则必须先学习课程bi。例如,先修课程对[0,1]表示想要学习课程0,你需要先完成课程1。请你判断是否可能完成所有课程的学习?如果可以,返回true;否则,返回false。......原创 2022-07-21 16:57:37 · 2126 阅读 · 0 评论 -
数据结构复习之——图算法
邻接表(用链表的形式,直接存点,这种方法可以表示所有的图,包括有权值的图,就是多填一个条件嘛)邻接矩阵图的算法是比较简单的,问题在于图的表示方式比较多,对应的不同算法的代码是不一样的这种问题的解决思路用自己最喜欢用的表达图的方法,实现图的所有问题的算法,然后实际应用的时候,就是写一个两种表达图的方式之间的转换代码罢了。...原创 2022-07-20 18:32:43 · 374 阅读 · 0 评论 -
对图的广度优先遍历BFS和深度优先遍历DFS的应用——基于LeetCode133 克隆图
这个基本大家都是了解的,基于队列,每一次出队列一个节点,把相关的没有进入队列的节点加入队列,循环执行操作即可实现对图的BFS了。但是如果BFS+其他知识点,可能就有些令人不好下手了。比如说这道克隆的题目(虽然python3里面已经提供了真·深拷贝,节省了不少功夫,不过我们为了锻炼code能力,还是自己做一下比较好),对我个人来说,就加深了我对于内存空间和map的理解和熟练掌握的程度。...原创 2022-07-20 17:16:32 · 242 阅读 · 0 评论 -
莫名其妙的越界错误原因之条件判断顺序——基于LeetCode 99题,恢复二叉搜索树
这种错误我想刷力扣的同学应该都没少遇到过,这个一般最常见的意思就是你设置的数据访问越界了,但是对于边界的设置很多时候我们已经很注意了,为什么还是会出现这类的问题呢?今天的练习过程中,我意识到了一个我之前确实经常忽视的问题,在此进行分享。...原创 2022-07-20 11:47:27 · 1600 阅读 · 0 评论 -
对于数据结构中树相关问题的算法处理方式
如何判断一棵树是搜索二叉树?如何判断一个树是完全二叉树?如何判断一个树是满二叉树?如何判断一个树是平衡二叉树?树相关结构通用递归方式。原创 2022-07-19 19:57:12 · 204 阅读 · 0 评论 -
算法补天系列之——链表,以及部分排序稳定性知识
有关链表涉及到的大部分算法,map和set数据结构,以及排序稳定性的相关说明和介绍原创 2022-07-18 18:21:42 · 216 阅读 · 0 评论 -
合并k个升序列表
实现k个升序链表的合并原创 2022-07-18 11:38:43 · 177 阅读 · 0 评论 -
算法补天系列之——堆和桶(以及部分排序问题)
对于堆结构和一些不基于比较的排序算法进行介绍和用法原创 2022-07-17 18:27:53 · 180 阅读 · 0 评论