03 2023 档案

摘要:图的广度优先遍历 ArrayDeque解析 作为队列使用 public abstract boolean add(E paramE); // 加入元素到队尾 public abstract boolean offer(E paramE); // 加入元素到队尾 public abstract E r 阅读全文
posted @ 2023-03-30 21:42 空無一悟 阅读(103) 评论(0) 推荐(0) 编辑
摘要:图的深度优先遍历的应用 常见的应用如下 求图的连通分量(1~2) 求两点间是否可达(3) 求两点间的一条路径(4) 检测图是否有环(9) 二分图检测(10~11) 寻找图中的桥和割点 哈密尔顿路径 拓扑排序 1 求无向图的连通分量的个数 DFS递归每退出一次,说明图有了一个连通分量,所以在dfs() 阅读全文
posted @ 2023-03-29 23:49 空無一悟 阅读(59) 评论(0) 推荐(0) 编辑
摘要:图的深度优先遍历 1 数据结构遍历的意义 每种数据结构,都必须有遍历的方式 很多算法的本质都是遍历,对于图论问题,真正理解遍历,已经可以应付80%的问题了 树的遍历 复习 复习下玩转数据结构第6章 和 玩转算法与数据结构第5章 树的深度优先遍历就是指前、中、后序遍历 ps:广度优先遍历实际就是层序遍 阅读全文
posted @ 2023-03-28 23:47 空無一悟 阅读(83) 评论(0) 推荐(0) 编辑
摘要:图的基本表示 1 图的分类 无向图 Undirected Graph 有向图 Directed Graph 无权图 Unweighted Graph 有权图 Weighted Graph 方向和权重组合可以得到如下四种常见的图: 优先讲无向无权图 无向无权图 无向有权图 有向无权图 有向有权图 2 阅读全文
posted @ 2023-03-27 23:49 空無一悟 阅读(279) 评论(0) 推荐(0) 编辑
摘要:哈希表 1 哈希表基础 以LeetCode387号问题为例 /*********************************************************** * @Description : LeetCode387号问题 * https://leetcode-cn.com/p 阅读全文
posted @ 2023-03-26 23:24 空無一悟 阅读(17) 评论(0) 推荐(0) 编辑
摘要:红黑树 1 红黑树与2-3树 红黑树举例 《算法导论》中堆红黑树的定义 首先红黑树一定是一棵二分搜索树BST 1.每个节点或者是红色的,或者是黑色的 2.根节点是黑色的 3.每一个叶子节点(最后的空节点)是黑色的 4.如果一个节点是红色的,那么它的孩子节点都是黑色的 5.从任意一个节点到叶子节点,经 阅读全文
posted @ 2023-03-25 21:14 空無一悟 阅读(70) 评论(0) 推荐(0) 编辑
摘要:AVL平衡树 1 什么是AVL平衡树 AVL是两个人的人名 Adelson-Velsky和Landis,两个人都是俄罗斯人,是两人在1962年的论文中首次提出,是最早的自平衡二分搜索树 什么是平衡二叉树? 对任意一个节点,其左子树和右子树的高度差不能超过1 平衡二叉树的高度和节点数量之间的关系也是O 阅读全文
posted @ 2023-03-24 23:14 空無一悟 阅读(33) 评论(0) 推荐(0) 编辑
摘要:并查集 两个点之间在树或图中是否连通的问题。 1 什么是并查集? 连接问题 网络中节点间的连接状态 数学中的集合类实现 连接问题与路径问题: 解决路径问题便一定可以解决连接问题,但由于路径问题考虑了更多与连接问题无关的操作,使得用处理路径问题的方式处理连接问题性能较差。 类似的,实现最大/最小堆的数 阅读全文
posted @ 2023-03-22 21:24 空無一悟 阅读(21) 评论(0) 推荐(0) 编辑
摘要:rie字典树 也称前缀树prefix tree 什么是Trie字典树 也称字典树Digital Tree;前缀树Prefix Tree Trie是一个多叉树,通常只用来处理字符串 前面几章我们一直在用的都是二叉树 Trie与字典在字符串查找中的性能比较 trie添加和查询字符串只与字符串的长度有关, 阅读全文
posted @ 2023-03-21 21:53 空無一悟 阅读(31) 评论(0) 推荐(0) 编辑
摘要:线段树 也称区间树,表明我们关系的是一个区间内的问题 1 什么是线段树 对于有一类问题,我们关系地是线段(即区间) 线段树的应用举例 染色问题 染色问题的操作步骤如下: | 操作 | 使用数组实现 | 使用线段树实现 | | | | | | 染色操作(更新区间) | O(n) | O(logn) | 阅读全文
posted @ 2023-03-20 23:12 空無一悟 阅读(58) 评论(0) 推荐(0) 编辑
摘要:堆和优先队列 1.什么是优先队列? 普通队列和优先队列的比较 普通队列:先进先出;后进后出 优先队列:出队顺序和入队顺序无关,和优先级相关,优先级高地先出队 优先队列的应用 医院排队,VIP客户优先 Windows任务管理器,系统任务优先 优先队列不同实现方式的时间复杂度 2.堆的基础 二叉堆与二叉 阅读全文
posted @ 2023-03-19 22:40 空無一悟 阅读(66) 评论(0) 推荐(0) 编辑
摘要:01_编译的详细过程 我们这里虽然介绍的是c程序的编译过程,但是实际上所有编译型语言的编译过程,大致是类似的 编译的四个过程 我们平时编译时,不管是通过IDE图形界面来编译的,还是通过命令行来编译的,我们感觉编译一下就完成了,然后就得到了你要的针对某OS和某CPU的二进制可执行文件 (机器指令的文件 阅读全文
posted @ 2023-03-17 21:58 空無一悟 阅读(171) 评论(0) 推荐(0) 编辑
摘要:集合Set与映射Map 二分搜索书BST和链表LinkedList都是动态结构,都可以用于构造集合Set 基于BST的Set:https://gitee.com/lsgwr/algorithms/blob/master/Part2Basic/src/main/java/Chapter07SetAnd 阅读全文
posted @ 2023-03-15 23:53 空無一悟 阅读(14) 评论(0) 推荐(0) 编辑
摘要:1 为什么要研究树结构 树结构的应用 文件目录树 公司人员组织架构 将数据使用树结构存储后,出奇的高效 二分搜索树BST(Binary Search Tree) 平衡二叉树:AVL、红黑树 堆、并查集 线段树、Trie(字典树、前缀树) 2 二分搜索树基础 从二叉树到二分搜索树 二叉树的基本结构 和 阅读全文
posted @ 2023-03-14 22:29 空無一悟 阅读(25) 评论(0) 推荐(0) 编辑
摘要:1.递归基础和递归的宏观语意 本质上,将原来的问题,转化为更小的同一问题 举例 代码 public class ArrSum { private int res = 0; public int sum(int[] arr) { return sum(arr, 0); } /** * 计算从arr[i 阅读全文
posted @ 2023-03-13 23:35 空無一悟 阅读(113) 评论(0) 推荐(0) 编辑
摘要:链表 LinkedList JDK中有标准库实现:java.util.LinkedList,和java.util.List对比,其实两者都可以看做是动态数组 链表的特征 线性数据结构——链表 是真正的动态数据结构:数据存储在节点(Node)中,是真正的动态,因为不需要处理固定容量的问题 是最简单的动 阅读全文
posted @ 2023-03-12 19:43 空無一悟 阅读(16) 评论(0) 推荐(0) 编辑
摘要:类似C++中的vector,动态数组需要满足以下功能 增(insert) 删(remove) 改(set) 查(get和contain) 支持泛型 自动扩容和缩容 上面的实现实际相当于JDK标准库中的java.util.List,常用方法如下(参考博客): addAll replaceAll sor 阅读全文
posted @ 2023-03-11 18:31 空無一悟 阅读(11) 评论(0) 推荐(0) 编辑
摘要:栈和队列的实现实际上完全可以用JDK自带的类ArrayDeque来实现 作为队列使用 public abstract boolean add(E paramE); // 加入元素到队尾 public abstract boolean offer(E paramE); // 加入元素到队尾 publi 阅读全文
posted @ 2023-03-10 19:26 空無一悟 阅读(87) 评论(0) 推荐(0) 编辑
摘要:第6章 并查集 又名Union Find,是一种特殊的树结构,专门用于解决连接问题(Connectivity Problem)。注意6.4开始的代码才有实用性,6.2和6.3的效率都太低了. 和图论中的连通性问题是一样的,这里应该是图论中的连通性问题的提取和抽象。参考4.2 求每个连通分量里各自具体 阅读全文
posted @ 2023-03-09 22:56 空無一悟 阅读(16) 评论(0) 推荐(0) 编辑
摘要:本章主要内容 堆排序 堆和优先队列 什么是优先队列 普通队列:先进先出;后进后出 优先队列:出队顺序和入队顺序无关;和优先级有关 Java中优先队列的实现类是PriorityQueue 参考博文 采用PriorityQueue实现大小顶堆 解决topK问题 默认是最小堆,每次弹出最小值;最大堆需要自 阅读全文
posted @ 2023-03-08 22:27 空無一悟 阅读(31) 评论(0) 推荐(0) 编辑
摘要:常见的排序算法总结 参考博文常见的排序算法——常见的10种排序 常见算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时 阅读全文
posted @ 2023-03-07 01:49 空無一悟 阅读(123) 评论(0) 推荐(0) 编辑

主题色彩
点击右上角即可分享
微信分享提示