随笔分类 - 数据结构
摘要:1. 一个很长的二进制向量和一个映射函数 2.用于检索一个元素是否在集合中,但有一定的错误概率:通过BloomFilter的元素不一定在集合当中,但是不通过BloomFilter的元素一定不在集合当中。 3.空间和时间都远超过一般的算法
阅读全文
摘要:一: 源代码是这样实现的: 原来的经过一次扰动函数之后的值&数组长度: 得到所在数组下标值,相比直接^数组长度,碰撞次数少了很多 二: https://www.cnblogs.com/yesiamhere/p/6653135.html 当数组长度为2的n次幂的时候,不同的key算得得index相同的
阅读全文
摘要:对于完全随机的数据,普通的二分搜索树就很好用,只是在极端情况下会退化成链表。 对于查询较多的情况,avl树很好用。 红黑树牺牲了平衡性,但是它的统计性能更优(综合增删改查所有的操作)。 红黑树java实现(不完整,没有进行删除节点的操作): (默认左倾红黑树)
阅读全文
摘要:平衡二叉树:对于任意一个节点,左子树和右子树的高度差不能超过1 AVLMap AVLSet:
阅读全文
摘要:时间复杂度: O(log*n),近乎是O(1)级别的 UnionFind 接口: 第一种: 第二种: 第三种: 第四种: 第五种: 第六种:
阅读全文
摘要:字典树是一种前缀树 节省空间: 压缩字典树,但是维护成本更高 三分搜索树
阅读全文
摘要:应用: 区间染色 区间查询 线段树不是完全二叉树,线段树是平衡二叉树 使用数组来实现线段树:存储空间为4n 以下是使用数组实现的静态线段树: 对于一个区间的更新: 懒惰更新:使用lazy数组记录未更新的内容,下一次访问时先访问lazy数组,若有内容,更新后再访问即可。 动态线段树: 使用链表实现 节
阅读全文
摘要:好像也不是基于链表来实现的,而是采用与链表类似的节点形式重新定义了一个节点内部类,以此来实现映射
阅读全文
摘要:底层数据结构: 数组 ArrayList 链表 LinkedList 应用数据结构: 二分搜索树 BST 最大堆/最小堆 MaxHeap/MinHeap 线段树 SegmentTree 字典树 Trie 并查集 UnionFind 平衡二叉树(AVLTree、2-3Tree) 红黑树 RBTree
阅读全文
摘要:LikedList: 链表栈 LinkedListStack: 链表队列 LinkedListQueue:
阅读全文
摘要:队列: Array: 队列接口: 数组队列: 循环队列: 队列为空:front == tail 队列满:(tail+1)%data.length == front
阅读全文
摘要:栈的应用: undo操作-编辑器 系统调用栈-操作系统 括号匹配-编译器 以下是动态数组实现的数组栈: 定义动态数组: 定义Stack接口: 定义ArrayStack:
阅读全文
摘要:O(n)不一定小于O(n^2),要具体来看,而我们说的这种时间复杂度其实是渐进时间复杂度,描述的是n趋近于无穷的情况。 动态数组的时间复杂度: 添加操作:O(n) addLast()的均摊复杂度为O(1) 删除操作:O(n) 修改操作:已知索引:O(1) 未知索引:O(n) 查找操作:已知索引:O(
阅读全文

浙公网安备 33010602011771号