
Algorithm
J1JJOSH
?
展开
-
【Algorithm】rand5生成rand7
前言这是面试的时候遇到的一个问题,问题的关键就是如何利用 rand5rand5rand5 生成均匀分布的 rand7rand7rand7,另外补充到,randrandrand 只能产生整数。思考首先我们来看看另外一个问题,如何利用 rand[0,1]rand[0,1]rand[0,1] 生成 rand[0,2k)rand[0,2^k)rand[0,2k)?这个可以通过组成2进制数的方式完成这...原创 2020-04-02 12:49:08 · 343 阅读 · 0 评论 -
【Algorithm】最短路径算法
1 前言从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短路径。解决最短路的问题有以下算法Dijkstra 算法Bellman-Ford 算法SPFA 算法(Bellman-Ford 算法的优化算法)Floyd 算法等给出一些名词解释:单源最短路径:从图中某个顶点到图其他各顶点的最短路径Relax 松弛:这是最短路径算法里面最关键的一步(我...原创 2020-02-18 00:28:35 · 514 阅读 · 0 评论 -
【Algorithm】并查集的实现与优化
1 前言并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。常见一些问题:求连通分支数,最小生成树 Kruskal 算法等,基本上都要使用到并查集2 并查集的简单实现并查集采用森林的结构,而表示一个森林,维护一个父节点序列即可,我们可以用一个 key-value 的数据结构来表示每一个节点以及父节点,下面给出一种无任...原创 2020-02-16 16:36:55 · 232 阅读 · 0 评论 -
【Algorithm】经典排序算法
1 前言本文对于排序算法的原理不会做过多的介绍,仅用于总结同时方便记忆每种算法的原理解释一些术语稳定:a 与 b 相等,排序前:a 在 b 前;排序后:a 与 b 的顺序不变不稳定:a 与 b 相等,排序前:a 在 b 前;排序后:a 与 b 的顺序可能会发生改变内部排序:所有排序操作都在内存中完成外部排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行...原创 2020-02-08 15:59:13 · 291 阅读 · 0 评论 -
【Algorithm】顺序表循环左移
QUESTION长度为 n 的数组,将其中的所有元素循环左移 p 个位置SOLUTION使用空间复杂度为 O(n) 的方法很简单,这里不在叙述,下面介绍一种原地算法方法一时间复杂度 O(n),空间复杂的 O(1)// 伪代码Array.Reverse(0, p-1)Array.Reverse(p, n-1)Array.Reverse(0, n-1)C++ 实现// 反转指定...原创 2019-10-28 22:44:55 · 920 阅读 · 0 评论 -
【Algorithm】二分查找法以及其变种
前言二分查找法用了这么久,总结一下常见的变种,这里看了很多别人的文章,在这里把它们说的总结一下(其实维基百科里面写的就非常全面了,不仅提出了问题,还有关于二叉查找的一些变种,链接可以在下面的介绍里面点击英文)什么是二分查找二分查找(Binary search)也称折半查找,它是一种效率较高的查找方法算法前提线性表必须采用顺序存储结构表中元素按关键字有序排列算法复杂度采用分治策...原创 2019-03-17 01:15:34 · 383 阅读 · 0 评论