
算法(数据结构)&&架构
文章平均质量分 80
算法+数据结构+架构
废言Pro
时间加努力
展开
-
好网站,可以看各种数据结构的动态
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html原创 2021-06-17 11:03:19 · 277 阅读 · 0 评论 -
红黑树原理浅谈(附Linux内核源码注释)
引言:红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在Leo J. Guibas和Robert Sedgewick于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的:它可以在 O(log n) 时间内做查找,插入和删除,这里的n是树中元素的数目。——摘自维基百科红黑树的性质:红黑树是每个节点转载 2021-06-10 11:15:55 · 668 阅读 · 0 评论 -
Tarjan 算法
Tarjan 算法一.算法简介Tarjan 算法一种由Robert Tarjan提出的求解有向图强连通分量的算法,它能做到线性时间的复杂度。我们定义:如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量(strongly connected components)。例如:在上图中,{1 , 2 , 3 , 4 } , { 5 } , { 6 } 三个区..转载 2021-04-24 11:27:08 · 377 阅读 · 0 评论 -
AES加密算法介绍与实现
AES简介高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:下面简单介绍下各个部分的作用与意义: 明文P 没有经过加密的数据。 密钥K 用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥.转载 2021-03-06 14:34:04 · 1897 阅读 · 0 评论 -
《算法图解》之狄克斯特拉算法
前言在学习广度优先搜索的时候,你找出了从A点到B点的路径。这是最短路径,因为段数最少——只有三段,但不一定是最快路径。如果给这些路段加上时间,你将发现有更快的路径。如果你要找出最快的路径,该如何办呢?为 ... 前言 在学习广度优先搜索的时候,你找出了从A点到B点的路径。 这是最短路径,因为段数最少——只有三段,但不一定是最快路径。如果给这些路段加上时间,你将发现有更快的路径。 如果你要找出最快的路径,该如何...原创 2021-03-03 15:08:32 · 368 阅读 · 1 评论 -
动态规划(DP)的原理、实现及应用
文章目录1. 由一个例子说开: 斐波那契(fibonacci)数列 性能测试 原因分析 2. 记忆化搜索 3. 动态规划(Dynamic Programming,DP) 最优子结构 总结一下这几个解法: 几个例题 LeetCode 70 Climbing Stairs 4. 动态规划的核心:状态与状态转移方程 LeetCode 343 Integer Break LeetCode 198 House Ro转载 2021-02-24 14:11:10 · 1911 阅读 · 0 评论 -
布隆过滤器(Bloom Filter)详解
布隆过滤器[1](Bloom Filter)是由布隆(Burton Howard Bloom)在1970年提出的。它实际上是由一个很长的二进制向量和一系列随机映射函数组成,布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率(假正例False positives,即Bloom Filter报告某一元素存在于某集合中,但是实际上该元素并不在集合中)和删除困难,但是没有识别错误的情形(即假反例False negatives,如果...转载 2021-01-13 10:11:57 · 344 阅读 · 0 评论 -
揭开「拓扑排序」的神秘面纱
以下文章来源于码农田小齐,作者小齐本齐码农田小齐点这里关注我呀!拿过多家offer的程序媛和你一起玩转算法和面试~前言Topological sort 又称 Topological order,这个名字有点迷惑性,因为拓扑排序并不是一个纯粹的排序算法,它只是针对某一类图,找到一个可以执行的线性顺序。这个算法听起来高大上,如今的面试也很爱考,比如当时我在面我司时有整整一轮是基于拓扑排序的设计。但它其实是一个很好理解的算法,跟着我的思路,让你再也不会忘记她。有向无环图..转载 2020-05-09 10:38:29 · 249 阅读 · 0 评论 -
漫画:“哈夫曼编码” 是什么鬼?
在上一期,我们介绍了一种特殊的数据结构“哈夫曼树”,也被称为最优二叉树。没看过的小伙伴可以点击下方链接:漫画:什么是 “哈夫曼树” ?那么,这种数据结构究竟有什么用呢?我们今天就来揭晓答案。计算机系统是如何存储信息的呢?计算机不是人,它不认识中文和英文,更不认识图片和视频,它唯一“认识”的就是0(低电平)和1(高电平)。因此...转载 2020-04-25 11:36:46 · 225 阅读 · 0 评论 -
THE HASH
AbstractI offer you a new hash function for hash table lookup that is faster and more thorough than the one you are using now. I also give you a way to verify that it is more thorough.All the text...原创 2020-04-23 15:17:12 · 293 阅读 · 0 评论 -
漫画:什么是 “哈夫曼树” ?
————— 第二天 —————————————————概念1:什么是路径?在一棵树中,从一个结点到另一个结点所经过的所有结点,被我们称为两个结点之间的路径。上面的二叉树当中,从根结点A到叶子结点H的路径,就是A,B,D,H概念2:什么是路径长度...转载 2020-04-23 12:32:17 · 213 阅读 · 0 评论 -
漫画:什么是A*寻路算法?
比如像这样子:...转载 2020-03-22 10:01:08 · 242 阅读 · 0 评论 -
漫画:什么是B+树?
在上一篇漫画中,我们介绍了B-树的原理和应用,没看过的小伙伴们可以点击下面的链接:漫画:什么是B-树?这一次我们来介绍B+树。—————————————————一个m阶的B树具有如下几个特征:1.根结点至少有两个子女。2.每个中间节点都包含k-1个元素和k个...转载 2020-03-21 15:24:17 · 236 阅读 · 0 评论 -
漫画:什么是B-树?
————————————————————————...转载 2020-03-21 15:18:12 · 165 阅读 · 0 评论 -
漫画:什么是红黑树?
————————————————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小...转载 2020-03-21 15:10:45 · 147 阅读 · 0 评论 -
漫画:“排序算法” 大总结
冒泡排序:漫画:什么是冒泡排序?选择排序:漫画:什么是选择排序?插入排序:漫画:什么是插入排序?此外还有冒泡排序的变种,鸡尾酒排序:漫画:什么是鸡尾酒排序?第三梯队的排序算法有什么共同点呢?它们的平均时间复杂度都是O(n^2)。冒泡排序、选择排序、插入排...转载 2020-03-21 10:45:51 · 243 阅读 · 0 评论 -
漫画:什么是快速排序?
————— 第二天 —————————————————同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是,冒泡...转载 2020-03-21 10:45:12 · 173 阅读 · 0 评论 -
漫画:什么是归并排序?
————— 第二天 —————————————————转存失败重新上传取消举个例子,有A、B、C、D、E、F、G、H一共8个武术家参考参加比武大会。第一轮,两两一组,有4名选手胜出(四分之一决赛)...转载 2020-03-21 10:41:24 · 217 阅读 · 1 评论 -
漫画:什么是基数排序?
————— 第二天 —————————————————什么是计数排序呢?让我们举例说明一下。给定20个随机整数的值如下:9,3,5,4,9,1,2,7,8,1,3,6,5,3,4,0,10,9 ,7,9如何最快地把这些无序的随...转载 2020-03-21 10:37:07 · 520 阅读 · 0 评论 -
漫画:什么是旅行商问题(NP)?
需要规划出怎样的路线呢?举个例子:有一个快递员,要分别给三家顾客送快递,他自己到达每个顾客家的路程各不相同,每个顾客之间的路程也各不相同。那么,想要把快递依次送达这三家,并最终回到起点,哪一条路线所走的总距离是最短的呢?旅行商问题和小灰所遇到的问...转载 2020-03-21 10:23:44 · 7733 阅读 · 2 评论 -
漫画:什么是图的最小生成树?
————— 第二天 —————————————————首先看看第一个例子,有下面这样一个带权图:它的最小生成树是什么样子呢?下图绿色加粗的边可以把所有顶点连接起来,又保证了边的权值之和最小:去掉那些多余的边,该图的最小生成...转载 2020-03-21 09:48:54 · 799 阅读 · 1 评论 -
漫画:图的 “多源” 最短路径
————— 第二天 —————小灰的思路如下:第一步,利用迪杰斯特拉算法的距离表,求出从顶点A出发,到其他各个顶点的最短距离:第二步,继续使用迪杰斯特拉算法,求出从顶点B出发,到其他各个顶点的最短距离。第三步,从顶点C出发,到各个顶点的最短距离。第四步,从顶点D出发....转载 2020-03-21 09:20:19 · 479 阅读 · 0 评论 -
漫画:Dijkstra 算法的优化
在上一篇漫画中,小灰介绍了单源最短路径算法 Dijkstra,没看过的小伙伴可以看下:漫画:图的 “最短路径” 问题漫画中我们遗留了一个问题:如何求得最短路径的详细节点,而不仅仅是距离?在本篇中,我们将会给与解答。我们仍然以下面这个带权图为例,找出从顶点A到顶点G的最短距离。详细过程...转载 2020-03-20 21:58:39 · 167 阅读 · 0 评论 -
漫画:图的最短路径问题
————— 第二天 —————如何遍历呢?第一层,遍历顶点A:第二层,遍历A的邻接顶点B和C:第三层,遍历顶点B的邻接顶点D、E,遍历顶点C的邻接顶点F:第四层,遍历顶点E的邻接顶点G,也就是目标节点:由此得出...转载 2020-03-20 21:50:50 · 290 阅读 · 0 评论 -
漫画:深度优先遍历 和 广度优先遍历
————— 第二天 —————————————————什么是 深度/广度 优先遍历?深度优先遍历简称DFS(Depth First Search),广度优先遍历简称BFS(Breadth First Search),它们是遍历图当中所有顶点的两...转载 2020-03-20 21:36:11 · 158 阅读 · 0 评论 -
漫画:什么是图?
图的概念究竟什么是图呢?大家先来想一想咱们常用的互联网产品。举个栗子,大家一定都用过微信,假设你的微信朋友圈中有若干好友:张三、李四、王五、赵六、七大姑、八大姨。而你七大姑的微信号里,又有若干好友:你、八大姨、Jack、Rose。微信中,许许多多的用户组成了一个多对多的朋友关系网,这...转载 2020-03-20 21:07:11 · 561 阅读 · 1 评论 -
拜托,面试别再问我计数和桶排序了!!!
时间复杂度为O(n)的排序,除了基数排序(Radix Sort),还有计数排序(Counting Sort)。今天,1分钟,通过几幅图,争取让大家搞懂计数排序。计数排序的适用范围?待排序的元素在某一个范围[MIN, MAX]之间。画外音:很多业务场景是符合这一场景,例如uint32的数字排序位于[0, 2^32]之间。计数排序的空间复杂度?计数排序需要一个辅助空间,...转载 2020-03-10 09:35:49 · 306 阅读 · 0 评论 -
拜托,面试别再问我基数排序了!!!
排序,面试中考察基本功问的比较多,工作多年以后,对排序的细节记忆不那么清楚的小伙伴,面试时会比较吃亏。有一种很神奇的排序,基数排序(Radix Sort),时间复杂度为O(n),今天花1分钟,通过几幅图,争取让大家搞懂细节。画外音:居然还有时间复杂度为O(n)的排序算法?不但有,其实还有很多。举个栗子:假设待排序的数组arr={72, 11, 82, 32, 44, 1...转载 2020-03-09 21:50:08 · 175 阅读 · 0 评论 -
拜托,面试别再问我TopK了!!!
面试中,TopK,是问得比较多的几个问题之一,到底有几种方法,这些方案里蕴含的优化思路究竟是怎么样的,今天和大家聊一聊。画外音:除非校招,我在面试过程中从不问TopK这个问题,默认大家都知道。问题描述:从arr[1, n]这n个数中,找出最大的k个数,这就是经典的TopK问题。栗子:从arr[1, 12]={5,3,7,1,8,2,9,4,7,2,6,6}这n=1...转载 2020-03-09 21:46:08 · 160 阅读 · 0 评论 -
漫画:如何实现大整数相乘?
前一段时间,小灰发布了一篇有关大整数相加的漫画,没看过的小伙伴可以先看一看:漫画:如何实现大整数相加?(修订版)那么,大整数相乘又是如何实现的呢?起初,小灰认为只要按照大整数相加的思路稍微做一下变形,就可以轻松实现大整数相乘。但是随着深入的学习,小灰才发现事情并没有那么简单......————— 第二天 —————...转载 2020-03-09 20:44:37 · 260 阅读 · 0 评论 -
漫画:如何实现大整数相加?
————— 第二天 —————————————————在程序中列出的 “竖式” 究竟是什么样子呢?我们以 426709752318 +954812...转载 2020-03-09 18:37:20 · 117 阅读 · 0 评论 -
漫画:什么是桶排序?
————— 第二天 —————————————————让我们先来回顾一下计数排序:计数排序需要根据原始数列的取值范围,创建一个统计数组,用来统计原始数列中每一个可能的整数值所...转载 2020-03-09 18:13:55 · 401 阅读 · 0 评论 -
漫画:什么是计数排序?
————— 第二天 —————————————————假定20个随机整数的值如下:9,3,5,4,9,1,2,7...转载 2020-03-09 18:06:14 · 133 阅读 · 0 评论 -
漫画:什么是优先队列?
在之前的漫画中,我们介绍了二叉堆和堆排序。没看过的小伙伴可以看一看前文:漫画:什么是二叉堆?(修正版)漫画:什么是堆排序?这一次,我们来讲一讲二叉堆的另外一个应用:优先队列队列的特点是什么?聪明的小伙伴们都知道,是先进先出(FIFO)。入队列:出队列:...转载 2020-03-09 17:49:59 · 239 阅读 · 0 评论 -
漫画:什么是堆排序?
在上一篇漫画中,小灰介绍了二叉堆这样一种强大的数据结构:漫画:什么是二叉堆?(修正版)那么,这个二叉堆怎样来使用呢?我们这一期将会详细讲述。让我们回顾一下二叉堆和最大堆的特性:1.二叉堆本质上是一种完全二叉树2.最大堆的堆顶是整个堆中的最大元素当我们删除一个最大堆的堆顶(并不是完全删除,而是替换到最后面...转载 2020-03-09 17:44:35 · 184 阅读 · 0 评论 -
漫画:什么是二叉堆?
————— 第二天 —————————————————什么是二叉堆?二叉堆本质上是一种完全二叉树,它分为两个类型:1.最大堆2.最小堆什么是最大堆呢?最...转载 2020-03-09 15:57:20 · 250 阅读 · 0 评论 -
漫画:如何实现抢红包算法?
发出一个固定金额的红包,由若干个人来抢,需要满足哪些规则?1.所有人抢到金额之和等于红包金额,不能超过,也不能少于。2.每个人至少抢到一分钱。3.要保证所有人抢到金额的几率相等。小灰的思路是什么样呢?每次抢到的金额 = 随机区间( 0, ...转载 2020-03-08 19:16:33 · 180 阅读 · 0 评论 -
漫画:什么是字典序算法?
————— 第二天 —————算法题目:给定一个正整数,实现一个方法来求出离该整数最近的大于自身的“换位数”。什么是换位数呢?就是把一个整数各个数位的数字进行全排列,从而得到新的整数。例如53241和23541。小灰也不知道这种经过换位的整数应该如何称呼,所以姑且称其为...转载 2020-03-08 16:32:42 · 177 阅读 · 0 评论 -
漫画:什么是八皇后问题?
————— 第二天 —————题目是什么意思呢?国际象棋中的皇后,可以横向、纵向、斜向移动。如何在一个8X8的棋盘上放置8个皇后,使得任意两个皇后都不在同一条横线、竖线、斜线方向上?让我们来举个栗子,下图的绿色格子是一个皇后在棋盘上的“封锁范围”,其他皇后不得放置在这些格子...转载 2020-03-08 16:20:48 · 431 阅读 · 0 评论 -
漫画:什么是架构师?
于是,小灰去向大黄请教这是有关未来的故事:从前,有一个赶路的人路过一片工地,看到三个年轻人在工地上搬砖。于是,他问其中一个人:于是,他又问了第二个人:...转载 2020-03-08 13:04:09 · 387 阅读 · 0 评论