摘要:
写hover下拉框的时候会遇到一个奇怪的bug,就是下拉框下来的时候会被所在位置的div遮挡,哪怕下拉框使用的absolute,也会被遮挡。 如图: 这个语言选择的下拉框会被下面的div挡住(截图是已经修复后的)。 无论是设置下拉框的z-index还是改父元素的position都无法解决。最后的解决 阅读全文
摘要:
深搜和广搜是图很多算法的基础,很多图的算法都是从这两个算法中启发而来。 深搜简单地说就是直接一搜到底,然后再回溯,再一搜到底,一直如此循环到没有新的结点。 广搜简单地说就是一层一层的搜,像水的波纹一样往外面扩散,扩散到最外层搜索也就完成了。 prim最小生成树、Dijkstra单源最短路径算法都使用 阅读全文
摘要:
字典树,又称前缀树,是用于存储大量字符串或类似数据的数据结构。 它的原理是利用相同前缀来减少查询字符串的时间。 不同于BST把关键字保存在本结点中,TRIE可以想象成把关键字和下一个结点的指针绑定,事实上我也是用map来实现的,所以不熟悉map的提前熟悉map的操作。 Tire的逻辑比较抽象,所以如 阅读全文
摘要:
跳表是一个很有意思的数据结构,它实现简单,但是性能又可以和平衡二叉搜索树差不多。 据MIT公开课上教授的讲解,它的想法和纽约地铁有异曲同工之妙,简而言之就是不断地增加“快线”,从而降低时间复杂度。 当“快线”的数量为lgn时,我们就得到了现在的快表——一个类似于平衡二叉搜索树的数据结构。 网上没有比 阅读全文
摘要:
斐波那契堆是一种高级的堆结构,建议与二项堆一起食用效果更佳。 斐波那契堆是一个摊还性质的数据结构,很多堆操作在斐波那契堆上的摊还时间都很低,达到了θ(1)的程度,取最小值和删除操作的时间复杂度是O(lgn)。 斐波那契堆的关键操作我觉得是合并树和级联剪切。下面我简要地说一些关于这两个方法的体会。 斐 阅读全文
摘要:
二叉堆可以看做一个近似的完全二叉树,所以一般用数组来组织。 二叉堆可以分为两种形式:最大堆和最小堆。最大堆顾名思义,它的每个结点的值不能超过其父结点的值,因此堆中最大元素存放在根结点中。最小堆的组织方式刚好与最大堆相反,它的最小元素存放在根结点中。 维护堆性质最重要的两个算法就是向上维护和向下维护。 阅读全文