AVL-tree
AVL树(Adelson-Velsky and Landis Tree)是计算机科学中最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。
查找、插入和删除在平均和最坏情况下的时间复杂度都是O(log n)。增加和删除元素的操作则可能需要借由一次或多次树旋转,以实现树的重新平衡。AVL树得名于它的发明者G. M. Adelson-Velsky和Evgenii Landis,他们在1962年的论文《An algorithm for the organization of information》中公开了这一数据结构。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041 ...
实现伸展树
伸展树(英语:Splay Tree)是一种能够自我平衡的二叉查找树,它能在均摊O(log n)的时间内完成基于伸展(Splay)操作的插入、查找、修改和删除操作。它是由丹尼尔·斯立特(Daniel Sleator)和罗伯特·塔扬在1985年发明的。
在伸展树上的一般操作都基于伸展操作:假设想要对一个二叉查找树执行一系列的查找操作,为了使整个查找时间更小,被查频率高的那些条目就应当经常处于靠近树根的位置。于是想到设计一个简单方法,在每次查找之后对树进行调整,把被查找的条目搬移到离树根近一些的地方。伸展树应运而生。伸展树是一种自调整形式的二叉查找树,它会沿着从某个节点到树根之间的路径,通过一系列的旋转把这个节点搬移到树根去。它的优势在于不需要记录用于平衡树的冗余信息。-— Wikipedia
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767 ...
C语言中复杂类型的声明
犹记得当第一次看见c的signal函数的原型的时候,懵逼了,这是个啥啊
123typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);
现在知道了,借助typedef声明了一个函数指针类型取名叫sighandler_t,这个函数指针返回值是void,入参是int。然后声明了signal函数,signal函数的返回值是sighandler_t这个类型的函数指针。typedef可以帮我们简化复杂类型的声明,在不借助typedef的情况下,c语言应该怎么声明复杂的类型呢?
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310 ...
github fork 项目同步上游
虽然github已经在网页上增加了fetch upstream功能,但如果有冲突,只能手动merge.以下记录一次手动合并的过程:
clone 自己fork的仓库12345678♥root-16:47:17->>~/workspace# git clone git@github.com:iEngne/now-subconverter.gitCloning into 'now-subconverter'...remote: Enumerating objects: 1514, done.remote: Counting objects: 100% (121/121), done.remote: Compressing objects: 100% (110/110), done.remote: Total 1514 (delta 24), reused 57 (delta 5), pack-reused 1393Receiving objects: 100% (1514/1514), 46.51 MiB | 991.00 KiB/s, done.Res ...
vscode ssh 远程登录天坑,使用密钥后仍需要输入密码
问题:使用ssh-keygen生成了密钥对后,把公钥直接重命名成authorized_keys拷贝到服务器~/.ssh目录,发现vscode ssh登录还是提示需要输入密码,还以为密钥对搞错了,反复重试都一样,这就费解了。
解决
Make sure the permissions on the ~/.ssh directory and its contents are proper. When I first set up my ssh key auth, I didn’t have the ~/.ssh folder properly set up, and it yelled at me.
Your home directory ~, your ~/.ssh directory and the ~/.ssh/authorized_keys file on the remote machine must be writable only by you: rwx------ and rwxr-xr-x are fine, but rwxrwx--- is no good¹, ...