最新 最热

DP:解决路径问题

二维动态规划(DP)模型是一种通过引入两个维度的状态和转移方程来解决复杂问题的技术。它在许多优化和组合问题中广泛应用,尤其是那些需要考虑二维数组或矩阵的情况。...

2024-10-09
2

DP:斐波那契数列模型

动态规划(Dynamic Programming,简称DP)是一种通过将复杂问题分解为更小的子问题来求解的算法设计技术。动态规划通常应用于有重叠子问题和最优子结构性质的问题。其基本思想是将问题分解成子问题,分别求解这些子问题,并将...

2024-10-09
3

BFS:解决拓扑排序问题

要知道什么拓扑排序我们首先要知道什么是有向无环图,有向无环图我们看名字其实就很容易理解,有向就是有方向,无环就是没有环形结构,这里我们展示一下有向无环图和有向有环图:...

2024-10-09
2

BFS:解决多源最短路问题

多源最短路问题(Multi-Source Shortest Path Problem,MSSP)是图论中的一个经典问题,它的目标是在给定图中找到从多个源点到所有其他顶点的最短路径。这个问题可以视为单源最短路问题(Single-Source Shortest Path Problem,...

2024-10-09
4

BFS:解决最短路问题

最短路问题是图论中的经典问题,旨在寻找图中两个节点之间的最短路径。常见的最短路算法有多种,这次我们讲的主要是以边权为1的最短路问题,什么是边呢?在图论中,权是两个节点的连线的路程。 举个简单的例子:...

2024-10-09
4

BFS:FloodFill算法

Flood Fill算法是一种用于确定与某个给定节点相连的区域的算法,常用于计算机图形学和图像处理。该算法可以用于诸如填充多边形、检测连通区域等任务。Flood Fill算法有多种实现方式,其中最常见的是递归方法和使用栈或队...

2024-10-09
2

基础算法---滑动窗口

滑动窗口(Sliding Window)是一种在计算机科学中用于解决各种子数组或子字符串问题的技术。滑动窗口技术通过维护一个固定大小的窗口在数组或字符串上移动,从而使得可以在较短的时间内解决一些复杂的问题。这种方法在处理...

2024-10-09
1

基础算法--双指针算法

通常我们讲的双指针就是用两个指针,两个指针可以是快慢指针,解决成环的问题,也可以是指向收尾的两个指针,来减小时间复杂度。双指针算法里的指针也不止是指针,在数组中也可以是数组元素的下标,这里双指针是一种思想,并不是单...

2024-10-09
1

模拟实现priority_queue

priority_queue是优先级队列。 什么是优先级队列? 优先级队列(Priority Queue)是一种数据结构,用于管理一组元素,使得每个元素都有一个关联的优先级,并且元素按照优先级进行排序和访问。优先级队列常用于调度算法、图算法(如...

2024-10-09
6

深入浅出递归算法

递归就是将一个很大的问题拆分成子问题,然后再将子问题继续拆分,拆分成更小的子问题,最后直到不能拆分为止。 递归一共分为三个步骤,首先,我们要将一个问题拆为一些子问题,然后去看这些子问题是否有相同的方法可以继续拆分,...

2024-10-09
3