算法与数据结构
文章平均质量分 82
1
冷冰殇
have a good day
展开
-
大数取余(快速幂与龟速乘)
在某些情况下我们需要计算an%b的结果,但当n较大时,an的结果通常无法直接保存。下面介绍两种方法(循环取余和快速幂取余)直接计算an%b的结果,无需计算an。原创 2023-04-05 22:29:24 · 670 阅读 · 0 评论 -
设计LFU缓存结构
LRU 和LFU是两种著名的缓存淘汰算法。LRU 算法的淘汰策略是 Least Recently Used,也就是每次淘汰那些最久没被使用的数据;LFU 算法的淘汰策略是 Least Frequently Used,也就是每次淘汰那些使用次数最少的数据。LRU 算法的核心数据结构是使用哈希链表 LinkedHashMap,首先借助链表的有序性使得链表元素维持插入顺序,同时借助哈希映射的快速访问能力使得我们可以在 O(1) 时间访问链表的任意元素。原创 2023-04-03 21:22:14 · 512 阅读 · 0 评论 -
常用排序算法
常用排序算法总结原创 2022-06-14 00:19:01 · 133 阅读 · 0 评论 -
水塘抽样算法(Reservoir Sampling Algorithm)
文章目录应用场景算法步骤算法原理代码实现应用场景主要用于解决大数据流中的随机抽样问题,即:当内存有限,数据长度很大,甚至未知,那么如何从中随机选取k个数据,并且要求是等概率。算法步骤水塘抽样的步骤是,只遍历一次,每次都考虑一个问题:当前元素是否被选中,选中后替换之前选中的哪一个元素。采样过程:step1:首先将前k个元素全部选取。step2:对于第i个元素(i>k),以概率k/i来决定是否保留该元素,如果保留该元素的话,则随机丢弃掉原有的k个元素中的一个(即原来某个元素被丢掉的概率是1/原创 2022-04-25 20:43:09 · 2660 阅读 · 2 评论 -
整数x的二进制表示有多少位1 以及 判断质数
判断质数普通方法private boolean isPrime(int x) { if (x < 2) { return false; } for (int i = 2; i * i <= x; ++i) { if (x % i == 0) { return false; } } return true;原创 2022-04-21 16:29:08 · 1110 阅读 · 0 评论 -
【数据结构】图
文章目录1. 基本术语2. 图的存储结构2.1 邻接矩阵2.2 邻接表3. 图的遍历3.1 深度优先搜索3.2 广度优先搜索4. 最小生成树普里姆(Prim)算法克鲁斯卡尔(Kruskal)算法5. 最短路径6. 拓扑排序7.关键路径1. 基本术语 图( Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 线性表中我们把数据元素叫元素,树中将数据元素叫结点,在图中数据元素,我们则称之为顶点(Vertex)。原创 2022-03-17 21:33:55 · 510 阅读 · 0 评论 -
【数据结构】表、栈和队列
文章目录1.表1.1 表的顺序存储1.2 表的链式存储2. 栈1.表将形如A0A_0A0,A1A_1A1,A2A_2A2,… ,An−1A_{n-1}An−1的数据结构称为表。这个表的大小是N。将大小为0的特殊的表称为空表( empty list)。对于除空表外的任何表,可以说AiA_iAi后继Ai−1A_{i-1}Ai−1,并称Ai−1A_{i-1}Ai−1前趋AiA_iAi。表中的第一个元素是A0A_0A0,而最后一个元素是An−1A_{n-1}An−1。A0A_0A0没有前原创 2022-03-15 20:17:47 · 688 阅读 · 0 评论 -
【数据结构】树
文章目录1.基础知识1.1 树的定义1.2树的实现2. 二叉树1.基础知识1.1 树的定义树(tree)可以用几种方式定义。定义树的一种自然的方式是递归的方式。一棵树是一些节点的集合。这个集合可以是空集;若不是空集,则树由称作根( root )的节点rrr以及0个或多个非空的(子)树T1T_1T1,T2T_2T2,…,TkT_kTk,组成,这些子树中每一棵的根都被来自根r的一条有向的边(edge)所连结。1.2树的实现第一儿子/下一兄弟表示法class TreeNode{ Object原创 2022-03-13 22:11:09 · 1201 阅读 · 0 评论