图基础

图(Graph)应用广泛,程序中可用邻接表和邻接矩阵表示图。依据不同维度,图可以分为有向图/无向图、有权图/无权图、连通图/非连通图、循环图/非循环图,有向图中的顶点具有入度/出度的概念。

面对图相关问题,第一步是将问题转为用图表示(邻接表/邻接矩阵),二是使用图相关算法求解。

相关LeetCode题:

997. Find the Town Judge  题解

1042. Flower Planting With No Adjacent  题解

图的遍历(DFS/BFS)

图的遍历/搜索可使用DFS或BFS方法。DFS方法  可视化过程,BFS方法  可视化过程

相关LeetCode题:

332. Reconstruct Itinerary  题解

785. Is Graph Bipartite?  题解

802. Find Eventual Safe States  题解

1059. All Paths from Source Lead to Destination  题解

133. Clone Graph  题解

关于BFS,详见:算法与数据结构基础 - 广度优先搜索(BFS)

最短路径问题

BFS另可用于求解无权图的最短路径问题,相关LeetCode题:

310. Minimum Height Trees  题解

854. K-Similar Strings  题解

对于有权图的单源最短路径问题,Dijkstra算法用于无负权边的问题求解 可视化过程,Bellman-Ford算法支持判断有无负权回路、若有则不存在最短路径。Floyd-Warshall是求解多源、无负权边的最短路径问题的算法 可视化过程

相关LeetCode题:

1129. Shortest Path with Alternating Colors  题解

928. Minimize Malware Spread II  题解

743. Network Delay Time  题解

787. Cheapest Flights Within K Stops  题解

399. Evaluate Division  题解

最小生成树

假设有权图中有这样一棵树,满足图任意两个顶点之间可达、并且这棵树所有边的权值之和最小。这样的树称之为图的最小生成树(MST,Minimum spanning tree)。求最小生成树有重要的现实应用,例如求城市之间航班的安排、使得整体成本最小。

求最小生成树的算法,有 Kruska算法  可视化过程 和 Prim算法  可视化过程

相关LeetCode题:

1168. Optimize Water Distribution in a Village  题解

1135. Connecting Cities With Minimum Cost  题解

图与并查集

如果需要求解图的某两个顶点是否连通、图分成多少非连通部分,这时可以用并查集(Union Find/Disjoint Set),并查集方法  可视化过程

相关LeetCode题:

684. Redundant Connection  题解

323. Number of Connected Components in an Undirected Graph  题解

839. Similar String Groups  题解

更多关于Union Find,详见:算法与数据结构基础 - 合并查找(Union Find)

图与拓扑排序

有这样一类问题:节点之间存在依赖关系,求按依赖关系排列节点,这类问题可以转换为有向无环图(DAG)、使用拓扑排序(Topological Sort)求解。

相关LeetCode题:

207. Course Schedule  题解

210. Course Schedule II  题解

444. Sequence Reconstruction  题解

1136. Parallel Courses  题解

269. Alien Dictionary  题解

更多关于拓扑排序,详见:算法与数据结构基础 - 拓扑排序(Topological Sort)

算法与数据结构基础 - 图(Graph)的更多相关文章

  1. 算法与数据结构基础 - 深度优先搜索(DFS)

    DFS基础 深度优先搜索(Depth First Search)是一种搜索思路,相比广度优先搜索(BFS),DFS对每一个分枝路径深入到不能再深入为止,其应用于树/图的遍历.嵌套关系处理.回溯等,可以 ...

  2. 算法与数据结构基础 - 广度优先搜索(BFS)

    BFS基础 广度优先搜索(Breadth First Search)用于按离始节点距离.由近到远渐次访问图的节点,可视化BFS 通常使用队列(queue)结构模拟BFS过程,关于queue见:算法与数 ...

  3. 算法与数据结构基础 - 堆(Heap)和优先级队列(Priority queue)

    堆基础 堆(Heap)是具有这样性质的数据结构:1/完全二叉树 2/所有节点的值大于等于(或小于等于)子节点的值: 图片来源:这里 堆可以用数组存储,插入.删除会触发节点shift_down.shif ...

  4. 算法与数据结构基础 - 哈希表(Hash Table)

    Hash Table基础 哈希表(Hash Table)是常用的数据结构,其运用哈希函数(hash function)实现映射,内部使用开放定址.拉链法等方式解决哈希冲突,使得读写时间复杂度平均为O( ...

  5. 算法与数据结构基础 - 二叉树(Binary Tree)

    二叉树基础 满足这样性质的树称为二叉树:空树或节点最多有两个子树,称为左子树.右子树, 左右子树节点同样最多有两个子树. 二叉树是递归定义的,因而常用递归/DFS的思想处理二叉树相关问题,例如Leet ...

  6. 算法与数据结构基础 - 分治法(Divide and Conquer)

    分治法基础 分治法(Divide and Conquer)顾名思义,思想核心是将问题拆分为子问题,对子问题求解.最终合并结果,分治法用伪代码表示如下: function f(input x size ...

  7. 算法与数据结构基础 - 双指针(Two Pointers)

    双指针基础 双指针(Two Pointers)是面对数组.链表结构的一种处理技巧.这里“指针”是泛指,不但包括通常意义上的指针,还包括索引.迭代器等可用于遍历的游标. 同方向指针 设定两个指针.从头往 ...

  8. 算法与数据结构基础 - 贪心(Greedy)

    贪心基础 贪心(Greedy)常用于解决最优问题,以期通过某种策略获得一系列局部最优解.从而求得整体最优解. 贪心从局部最优角度考虑,只适用于具备无后效性的问题,即某个状态以前的过程不影响以后的状态. ...

  9. 算法与数据结构基础 - 数组(Array)

    数组基础 数组是最基础的数据结构,特点是O(1)时间读取任意下标元素,经常应用于排序(Sort).双指针(Two Pointers).二分查找(Binary Search).动态规划(DP)等算法.顺 ...

随机推荐

  1. 扩展GroupBox控件

    1.GroupBox的边框颜色可以自行设置: 2.GroupBox可以设置边框的为圆角: 3.设置GroupBox标题在控件中的位置. 4.设置GroupBox标题的字体和颜色. 具体实现步骤Pane ...

  2. 解决Sklearn中使用数据集MNIST无法获取的问题(WinError 10060)

    今天在学习PCA的时候,使用mnist数据集遇到一个问题,代码是这样的: import numpy as np from sklearn.datasets import fetch_mldata mn ...

  3. Yii的srbac拓展中“用户已经获授权项”无法查看

    Yii的srbac拓展中“用户已经获授权项”点下拉框,选择一个有权限的用户时,根本无法列出权限. 原因是srbac把数据库的表中的ID默认为数字,像 123这样,但如果不是数字像这样 'y0f22ff ...

  4. 一份程序猿单词列表(updating)

    以下单词是个人平时阅读英文文档时遇到的一些“生”单词,该文档将持续更新,可以持续关注https://github.com/hylinux1024/word-list-for-programmer hi ...

  5. 小白学Python(4)——用Python创建PPT

    python-pptx是一个用于创建和更新PowerPoint(.pptx)文件的Python库. 典型的用途是从数据库内容生成自定义的PowerPoint演示文稿,可通过单击Web应用程序中的链接进 ...

  6. 基于mybatisPlus的特殊字符校验

    要实现以下代码前提是导入Mybatis-plus的jar: * @author WENGKAIBO505 */ @Target({ElementType.FIELD, ElementType.METH ...

  7. 亲,麻烦给个五星好评!—RatingBar

    引言 上一篇的CheckBox已经让大家越来越接近实战演练了,本章我们继续分享干货给大家,今天介绍一个实用的UI控件RatingBar(星级评分条),对于使用过电商APP(某东,某宝等)的小伙伴们来说 ...

  8. Kibana 管理界面使用教程

    使用浏览器访问 ip:5601 默认端口,进入首页 Discover:日志管理视图 Visualize:统计视图 Dashboard:仪表视图 Timelion:时间轴视图 APM:性能管理视图 De ...

  9. 随笔编号-05 BigDecimal 处理集合

    1  创建一个BigDecimal 对象 BigDecimal Sum = new BigDecimal(0); 2  一个BigDecimal 对象,保留2位小数点 Sum.setScale(2,B ...

  10. Codeforces 1204C

    题意略. 思路:我的想法是逐步地找出这个序列中的重要点,我要判断当前这个点能不能删去,就要看上一个重要点和当前这个点 i 在序列中的下一个点 i + 1之间的距离 是否是最短距离,如果是,那么我们就可 ...