随笔分类 - 算法与数据结构
摘要:题目描述 实现一颗字典树 跳转链接 Jump To Problem Jump To Solution 代码 import java.util.ArrayList; import java.util.Iterator; class HASet<K> implements Iterable<K> { @
阅读全文
摘要:思路 经过简化,其实只需要记录是否存在即可 所以可以只手写 HashSet HashSet代码 import java.util.ArrayList; import java.util.Iterator; /** * Hash-based Set */ class HASet<K> implemen
阅读全文
摘要:数论小结 03 欧拉函数的应用 RSA加密算法 选取两个质数 \(p,q\) 求 \(\varphi(n),n=p\cdot q\),显然:\(\varphi(n)=(p-1)(q-1)\) 构造公钥 \((n,e)\),选取 \(e\in[2,\varphi(n))\) 并且 \(\gcd(e,\
阅读全文
摘要:数论小结 02 费马小定理 定理描述 \[ if\ p\ is\ a\ prime,\ \gcd(a,p)=1,\ then\ a^{p-1}\equiv1\ \mod p \] 费马小定理应用 求逆元 求解 \(ax\equiv1\mod p\),套用费马小定理: \[ a\cdot a^{p-2
阅读全文
摘要:最小生成树 描述 输入:给出一个图(带权无向边集) 输出:给出一个最小生成树(带权无向边集) 测试数据 vector<Edge> edges={ Edge("A","I",6), Edge("A","J",6), Edge("A","G",5), //3 Edge("B","F",2), Edge(
阅读全文
摘要:数论小结 1. 扩展欧几里得 首先,根据辗转相除法,不难有: \[ \gcd(a,b)=\gcd(b,a\%b) \] 关于扩展欧几里得算法,是解决线性方程:\(ax+by=c\) 当且仅当,\(\gcd(a,b)|c\) 有解 又因为,\(x,y\in\Z\),所以问题可以转化为,解线性方程:\(
阅读全文
摘要:解题思路 思路显而易见,计算几何求凸包 Orz大佬,这Python代码绝绝子 @z1m 补充 2022/4/23 补充Graham算法 Andrew算法 C++版本 class Solution { public: vector<vector<int>> outerTrees(vector<vect
阅读全文
摘要:AVL Tree 在 Binary Search Tree 现有属性之上,依赖于可以其二分查找的特性,进行树高的调整优化 在每个节点多维护一个子树高度(height)的信息 每次 insert/remove 时,按照限制条件,动态旋转,以满足任意节点的平衡因子的绝对值 \(<=1\) 节点属性 ke
阅读全文
摘要:Master Method 分治递归,是我们常用的程序设计思想,如何衡量一个递归算法设计的好坏呢? 这就使得我们得去思考:递归算法的复杂度如何计算 Master Method 是这样描述的: \[ T(n)=kT(n/m)+f(n),f(n)=n^d \] \[ T(n)\in \begin{cas
阅读全文
摘要:二叉树 - Node 数据存储部分 key-value 左儿子 left 右儿子 right public class Node { private Key key; // 键 private Value val; // 值 private Node left, right; // 指向子树的链接
阅读全文
摘要:2-3-4 tree 平衡2-3-4树 2-3-4 tree 学习资源 定义 一颗2-3-4树,要么为空,要么由以下四种结点组成: 中间结点三种: 2-节点,有一个关键字和由其划分的两个区间链接 3-节点,有两个关键字和由其划分的三个区间链接 4-节点,有三个关键字和由其划分的四个区间链接 叶子结点
阅读全文

浙公网安备 33010602011771号