普通线段树    时间 log2(n); 空间 n+log2(n)+log4(n)+log(8)n+.....+logn(n)==n*4; 动态开点线段树 时间 log2(n); 空间 q*log2(n)==n*80;//q表示询问的次数 普通平衡树 时间 平均log2(n),最坏n; 空间 n; splay(伸展树) 时间 log2(n); 空间 n; treap(树堆)(有旋)        时间 log2(n); 空间 n; 非旋treap(可持久化) 时间 log2(n); 空间 n;…
二叉树的前序遍历.中序遍历.后序遍历 前序遍历 遍历顺序规则为[根左右] ABCDEFGHK 中序遍历 遍历顺序规则为[左根右] BDCAEHGKF 后序遍历 遍历顺序规则为[左右根] DCBHKGFEA 什么是时间复杂度和空间复杂度 时间复杂度 是指执行当前算法所消耗的时间 空间复杂度 是指执行当前算法需要占用多少内存空间 评价一个算法的效率主要是看它的时间复杂度和空间复杂度.然后有时候鱼和熊掌不可得兼,所以我们就需要从中去取一个平衡点 知道淘汰策略的哪些算法? lru算法如果让你实现你会选择…
程序的时间和空间,往往是一对矛盾,比如计算CRC32的时候会用到余式表 DWORD *crcTable; // DWORD[256]; 余式表可以用某种规则计算生成,为缩短文章长度就不写出来了,总之要做一堆数据处理,消耗时间 有时候为了提升程序时间,我们直接在内存中声明一个计算好的余式表 DWORD crcTable[256] = {0x00000000L, 0x77073096L, 0xee0e612cL, ...} 这就是所谓的牺牲空间来换取时间,比如你一秒钟要计算10000次之类的,当然聪…
(1).有以下程序: 求输入的n值(除1和n)之外的所有因子之和. 分析:这里函数内的循环体i初值不能为零.%是表示"取余",0除以任何数都不会存在余数的,所有是余数为0. (2).有以下程序: 形参m(2<=m<=9),在二维数组中存放一张m行m列的表格,有main函数输出规则如下,使得每一列的数据以每一行首个数字为公差进行递增. 分析:主要就是输出显示二维数组,根据输入n的多少,来执行几行几列. (3).有以下程序: 将长整型数中每一位上为偶数的数一次逆向取出,构成一个…
概述 早就想写关于kafka时间轮的随笔了,奈何时间不够,技术感觉理解不到位,现在把我之前学习到的进行整理一下,以便于以后并不会忘却.kafka时间轮是一个时间延时调度的工具,学习它可以掌握更加灵活先进的定时器技术,补益多多.本文由浅到深进行讲解,先讲解定时器基础以及常用定时器,接着就是主要的kafka时间轮实现.大部分都是原理.后期作者写第二部分的时候专门讲解时间轮的实践和使用. 定时器概念 使用场景,例如: 1,使用tcp连接的时候,客户端需要向服务端发送心跳请求. 2,财务系统每月生成的定…
python web工程师跳巢攻略 流程 一面问基础 二面问项目 三面问设计(经验) web请求的流程 浏览器 负载均衡 web框架 业务逻辑 数据库缓存 后端技术栈 python语言基础 语言特点 语法基础 高级特性 算法与数据结果 常用算法和数据结构 分析时间/空间复杂度 实现常见数据结构和算法 编程范式 面向对象变成 常用设计模式 函数式编程 操作系统 常用Linux命令 进程/线程 内存管理 网络编程 常用协议TCP/IP/HTTP Socket编程基础 python并发库 数据库 My…
一.数据结构与算法概述 数据结构与算法的定义 我们把现实中大量而且非常复杂的问题以特定的数据类型(个体)和特定的存储结构(个体的关系)保存到相应的主存储器(内存)中,以及在此基础上为实现某个功能而执行的相应操作,这个相应操作也叫做算法. 数据结构 = 个体 + 个体的关系 算法 = 对存储数据的操作 二.衡量算法的标准 时间复杂度 指的是大概程序执行的次数,并非程序执行的时间 空间复杂度 指的是程序执行过程中,大概所占有的最大内存 常用的查找 顺序查找 lowB for循环 时间复杂度 O(n)…
数据结构+算法面试100题~~~摘自CSDN,作者July 1.把二元查找树转变成排序的双向链表(树) 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调整指针的指向.   10  / /  6  14 / / / /4  8 12 16 转换成双向链表4=6=8=10=12=14=16.  首先我们定义的二元查找树 节点的数据结构如下: struct BSTreeNode{  int m_nValue; // value of node  BSTr…
  文章图片来自邓俊辉老师课件 先提几个问题去思考学习本文 : 红黑树和2-4树(B-Tree)很像,那么它存在的动机又是什么呢 插入和删除操作的逻辑又是怎么样的,时间和空间复杂度可以达到怎么样 和 AVL 对象有什么区别呢 概述 定义 我们可以看到红黑树有4条重要的定义,这4条定义保证了这个平衡树.下面我们看一下它和B-Tree的联系. 从这个结构上说,我们可以知道B-Tree相比于红黑树,红黑树需要维护一个颜色这样的属性,需要空间,而同时红黑树搜索时可以 像二叉树一般查找,而B-Tree每一…
编程语言: Q:如果写的函数需要传入一个指针,则是否需要为该指针加上const?把const加在指针不同的位置是否有区别? A:const是用来声明一个常量的,如果不想让一个值改变就应该加上const.首先来看如下的一段代码: int a = 100; const int *b = &a; // 1 int const *b = &a; // 2 int *const b = &a; // 3 const int *const b = &a; // 4 区分常量指针和指针常…