数据结构与算法
文章平均质量分 87
笨猪大难临头
。...gg
展开
-
Java集合扩展系列 | 字典树
1、什么是字典树如下图就是一颗字典树, 这是往树里插入字符串 he、she、hers、his、shy 生成的树特点字典树又名前缀树 和 单词查找树, 每个字符串的公共前缀都将作为一个字符节点保存。它本质是一颗多叉树, 除了根节点, 每个节点只存放一个字符, 从根节点到某一绿色节点,路径上经过的字符连接起来,就是该节点对应的字符串。比如 从根节点root到 8号节点 经过的路径连接起来就是一个插入的字符串his2、字典树能做什么核心是空间换时间,优点是利用字符串的公共前缀来降原创 2022-04-03 12:30:21 · 1664 阅读 · 0 评论 -
Java 集合扩展系列| 并查集
1、什么是并查集首先并查集是一个集合, 主要有两个操作合并(Union):把两个不相交的集合合并为一个集合。查询(Find):判断两个元素是否在同一个集合中。主要用于处理不相交集合的合并及判断连接问题。2、并查集能做什么解决连接问题 (社交网络、关系网)最近公共祖先渗滤图像处理有限状态自动机的等价性Hinley-Milner 的多态类型推断Kruskal 的最小生成树算法游戏(围棋、十六进制)在 Fortran 中的编译语句的等价性问题2、并查集实现结构并查集的结构有原创 2022-03-22 01:14:32 · 1415 阅读 · 0 评论 -
Java 集合扩展 | 索引堆实现
1、前言好像Java自带的集合体中并没有原生索引堆实现, 甚至原生的普通堆都没有,而优先级队列PriorityQueue虽然可以当作堆来使用,虽然底层是用了堆的思想实现, 但是它本质还是属于队列体系。2、什么是堆特点1: 本质是一棵完全二叉树特点2: 每个节点的值比它左右孩子节点的值都小 或者 都大。比孩子节点值都大的叫 最大堆, 反之叫最小堆。如下图两颗完全二叉树就是属于堆3、堆可以做什么(应用场景)堆可以以O(1)时间复杂度快速的获得集合里的最大 或者 最小值。应用场景原创 2022-03-20 23:33:33 · 429 阅读 · 0 评论 -
Java 集合扩展 | 图框架
1、前言一直很好奇为什么JDK没有实现图这种数据结构, 而每次当我们需要去使用的图的时候都要重新写一遍领接矩阵、领接表之类 然后再去写算法实现, 实在异常麻烦。于是便简单对图这种数据结构进行一些封装实现(仅供学习)。具体代码见 github2、图是如何存储图的存储主要有两种实现,分别是领接矩阵 和 领接表。2.1、领接矩阵实际就是用一个二维数组去存储图中节点与节点的关系。 行下标和列下标分别代表一个节点序号,数组的值表示一条边。 比如有下图二维数组 int[][] graph, 则 graph原创 2022-03-18 00:18:52 · 746 阅读 · 0 评论 -
字符串算法 | AC自动机算法
kmp原创 2021-04-11 17:52:23 · 1848 阅读 · 4 评论 -
字符串算法 | KMP算法动图详解
待续原创 2021-03-30 23:51:34 · 1299 阅读 · 3 评论 -
一致性hash算法
1、一个分布式缓存场景假设有A、B、C编号是0、1、2 的 3台服务器集群,现在需要将几万张图片均匀的缓存到集群上,如何实现其实 哈希表已经告诉我们答案了、 就是对key进行hash运算然后对哈希表大小进行取模计算出桶下标同理、这里的key就是图片名称(假设图片名称全局唯一),除数就是集群机器数,余数就是服务器编号 .计算过程为: hash("图片名称") % 集群机器数 = 服务器编号 .方便后续说明,称为普通哈希计算经过这样的计算,那么我们的图片一定是能够缓存到集群的某一台服务原创 2020-11-27 01:59:34 · 1028 阅读 · 2 评论 -
java实现数据结构之二分搜索树BST总结
文章目录1.二分搜索树特点2.二叉搜索树长啥样子?3.二分搜索树优点4. 二分搜索树缺点5.二叉搜索树动态演示网站推荐6.如何构建二分搜索树?6.1 添加元素6.2 删除操作7. 二叉搜索树的遍历7.1 前序遍历(根左右)7.2 中序遍历(左根右)7.3 后序遍历 (左右根)7.1 层序遍历8.完整实现代码1.二分搜索树特点 是一棵二叉树。对于任意节点,如果节点的左子树不空,则左子树上...原创 2019-05-21 15:00:47 · 1039 阅读 · 1 评论