本文通过 53. Maximum Subarray & 152. Maximum Product Subarray 分析根据动态规划思路进行问题求解中的一个关键环节:子问题的拆分和求解。
你永远流淌在我的记忆里?River flows in you
No results found
本文通过 53. Maximum Subarray & 152. Maximum Product Subarray 分析根据动态规划思路进行问题求解中的一个关键环节:子问题的拆分和求解。
本文将介绍带权图的最小生成树(Minimum Spanning Tree)算法:给定一个无向图 G,并且它的每条边均有权值,则 MST 是一个包括 G 的所有顶点及边的子集的图,这个子集保证图是连通的,并且子集中所有边的权值之和为所有子集中最小的。
本文中介绍两种求解图的最小生成树的算法:Prim 算法和 Kruskal 算法,这两种算法都是贪心算法。一般而言,贪心策略不一定能保证找到全局最优解,但是对最小生成树问题来说,贪心策略能获得具有最小权值的生成树。
本文介绍几种常见的最短路径算法:
本文主要介绍 BFS 的 C++ 和 C 语言实现,并借助 LeetCode 上的一道题,说说基本的 BFS 在问题求解中的应用。
广度优先搜索算法(Breadth First Search),又叫宽度优先搜索,或横向优先搜索。是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。
本文主要介绍 DFS 的 C++ 和 C 语言实现,并借助 LeetCode 上的一道题,说说基本的 DFS 在问题求解中的应用。
深度优先搜索算法(Depth First Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点 N 的所有边都己被探寻过,搜索将回溯到发现节点 N 的那条边的起始节点,这一过程一直进行到已发现从源节点可达的所有节点为止。
如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。
本文介绍 Divide and Conquer(分而治之) 的一种典型算法,FFT(快速傅里叶变换)。
DFT:$X[k] = \sum_{n=0}^{N-1} x[n] e^{-j \frac{2 \pi k}{N} n}, k = 0, 1, 2, …, N-1$