zoukankan      html  css  js  c++  java
  • 初识数据结构

    一、哈希表

      www.cnblogs.com/lnu161403214/p/8858236.html

      O(1)的查找效率,使其在查重和判等价方面用处极大

    二、树与二叉树

      树的实现:邻接表法(VECTOR)

      二叉排序树:左子节点小于自身,右子节点大于自身,中序遍历后即得到升序数列。

      哈夫曼二叉树:将信息存储于叶子节点上,访问频率高的节点深度尽量低,以优化效率。例如:前缀编码。

      字典树:将所有字符串连在根节点上建一棵树。

    三、优先队列与左偏树(可并堆)

      动态地维护最大值

    四、并查集

      将一个连通块看做一种集合,把树根作为这个集合的标志

      带权并查集维护相对关系:

      每个节点增加一个权值,维护与父节点的相对关系,“查”操作时,顺着父节点递推出与祖父节点(树根)的相对关系,“并”操作时,通过其他节点的相对关系,递推出两个要合并的树根的相对关系(有点绕--)。

      具体见经典题:食物链

    五、线段树

      难点在于研究左右两个区间解如何高效地合并

      线段树的常见应用:

      1)区间最大值最小值,区间和

      2)区间最大连续段

      3)矩形面积并,周长并

      ☆实现区间修改的lazy标志,等到有查询时,标志再下传,有效地将时间复杂度分散了。

    六、树状数组

      1)动态维护了前缀和,代码很简单,但只可单点修改

      2)二维树状数组代码很简单

    七、伸展树

      (可删除元素、增加元素的线段树

    八、分块

      待续。。。

  • 相关阅读:
    Django
    python django框架学习
    Http Header里的Content-Type
    Python 头部 #!/usr/bin/python 和 #!/usr/bin/env python的区别
    关于“编译型语言”和“解释性语言”的区别
    Axure XMind整理交互思路
    异常处理
    re模块
    模块
    正则表达式**************************
  • 原文地址:https://www.cnblogs.com/lnu161403214/p/8946763.html
Copyright © 2011-2022 走看看