16、数据结构与算法 - 实战:递归案例
摘要 今天通过一个求解斐波那契数列来看一下递归思想,在多个不同的优化过程中学习递归转换非递归的方式。 今天通过一个求解斐波那契数列来看一下递归思想,在多个不同的优化过程中学习递归转换非递归的方式。 上期文章介绍了递归的本质,使用递归的思想等...
摘要 今天通过一个求解斐波那契数列来看一下递归思想,在多个不同的优化过程中学习递归转换非递归的方式。 今天通过一个求解斐波那契数列来看一下递归思想,在多个不同的优化过程中学习递归转换非递归的方式。 上期文章介绍了递归的本质,使用递归的思想等...
摘要 递归是简化解决问题的思路,减少代码的处理方式。其本质就是将问题不断拆分成同类型的小问题,找到可以直接给出答案的地方时,再不断反推,直到得出原问题的答案。 递归(Recursion),就是函数直接或者间接调用自身,在编程中是非常常用的一...
公众号:“皇子谈技术”主理人
摘要 Floyd 算法是可以计算出任意两个顶点之间的最短路径。它的核心原理基于这样一个共识,即两个顶点之间的最短路径的情况要么是两个顶点之间直接连接,要么就是通过其他顶点连接。 Floyd 算法是可以计算出任意两个顶点之间的最短路径。它的核...
摘要 Bellman-Ford 算法是求单源最短路径的算法,它的核心就是不断松弛边,使得到达其他顶点成为最短路径。这次终于理解了边的松弛操作的本质了,也是可喜可喜。 Bellman-Ford 算法是求单源最短路径的算法,它的核心就是不断松弛...
摘要 理解 Dijkstra 算法,可以想象将石头依次从桌子上提起来的场景,绷直的边就是最短的路径。比较难理解就是松弛操作,需要多思考一些。看来算法也是源于自然和生活啊(没有根据的猜测)!!! 理解 Dijkstra 算法,可以想象将石头依...
摘要 所有的图都是有最短路径的,计算最短路径比较经典的应用场景就是路径规划。最短路径也有它自身的局限性,比如不能出现负权环等。这里先了解最短路径的概况,后面几期将分别介绍求最短路径的几个经典算法。 所有的图都是有最短路径的,计算最短路径比较...
摘要 Kruskal 是求最小生成树的算法,本质就是依次将权值小的边不断并入最小生成树中。这期间可能会形成环,这里使用并查集的数据结构来避免形成环,这个点是非常巧妙的。 Kruskal 是求最小生成树的算法,本质就是依次将权值小的边不断并入...
摘要 生成树是一种图的表现形式,它有个简单的规定,就是边的数量等于顶点的数量减一。在有权图中找到最小生成树在很多场景中被应用到。这里主要介绍一种获取最小生成树的方法,即 Prim。还有另外一种,下期继续。 生成树是一种图的表现形式,它有个简...
摘要 AOV 网是图的一种类型,本质是一个有向无环图。AOV 网的排序被称为拓扑排序,它的实现思路是卡恩算法。代码实现上要留意删除顶点的操作,这是一个很巧妙的处理方式。 AOV 网是图的一种类型,本质是一个有向无环图。AOV 网的排序被称为...
摘要 图的遍历有两种方式,这两种方式和二叉树的层序遍历和前序遍历逻辑是一致的,在实现过程中使用到了队列和栈的数据结构。看本期文章相当于重温一下队列、栈和二叉树的遍历等知识。 图的遍历有两种方式,这两种方式和二叉树的层序遍历和前序遍历逻辑是一...