LeetCode刷题笔记,leetcode题库答案

  LeetCode刷题笔记,leetcode题库答案

  

知识点1:

用户标识符要求由字母、数字、下划线和

不能用数字作为标识符的开头

组成。

  知识点2:

树从根结点开始往下数,叶子结点所在的最大层数称为树的深度。

从0开始计数,深度=高度-1,从1开始计数,深度等于高度。附:rrdsb数深度一般从0开始,一般用于计算加权路径长度。

  

知识点3:

我们都知道

数组存储数据

按顺序,

索引效率都很高

为数据,但是

插入和删除就会有性能瓶颈

(回忆ArrayList),

链表

存储数据,需要反复比较元素(按p-next逐个搜索)来检索数据,所以

索引效率低

但是插入和删除效率高

(回忆LinkedList),

两者取长补短就产生了哈希散列这种存储方式

,也就是负载因子表示哈希表空间的使用程度。有这样一个公式:

initiallCapacity*loadFactor=HashMap

的容量。因此,加载因子越大,哈希表的填充度越高,即可以容纳更多的元素,元素越多,链表越大,此时索引效率就会降低。反之,加载因子越小,链表中的数据越稀疏,会浪费空间,但此时索引效率较高。

  知识点4:

必须使用初始化列表的时候

  除了性能问题,有时候初始化列表也是必不可少的,

以下几种

就是

必须使用初始化列表

  1.

常量成员

,因为常量只能初始化不能赋值,所以必须放在初始化列表中。

  2.

引用类型

,引用定义时必须初始化,不能重新赋值,所以也要写在初始化列表中。

  3.

没有默认构造函数的类类型

,因为使用初始化列表,可以直接调用复制构造函数,而不是调用默认构造函数进行初始化。

  知识点五:就类对象而言,同类型类对象通过复制构造函数来完成整个复制过程。复制构造函数是一个特殊的构造函数,函数的名字是

必须和类名称一致

,它唯一的参数是这个类型的引用变量,是const类型,不可变。例如,类X的复制构造函数的形式是X(const X x)。

当类的对象需要拷贝时,拷贝构造函数将会被调用。

  在下列情况下会调用复制构造函数:

  通过值传递的方式将对象传递到函数体中。

  通过值传递从函数返回一个对象。

  一个对象需要被另一个对象初始化。

  知识点5:

  深度复制和浅度复制可以简单理解为:

如果一个类拥有资源,当这个类的对象发生复制过程的时候,资源重新分配,这个过程就是深拷贝,反之,没有重新分配资源,就是浅拷贝。

  

知识点6:

重载运算符是一个有特殊名称的函数,函数名由关键字运算符和后面要重载的运算符符号组成。像其他函数一样,重载操作符有一个返回类型和一个参数列表。如下所示:

  盒子运算符(const Box);

  知识点7:递归算法估计时间复杂度。

  知识点8:对于深度为k,节点数为n的二叉树,当且仅当每个节点对应于深度为k的完全二叉树中编号为1到n的节点时,称为完全二叉树.

  知识点9:

  活动可以用来描述生产计划、建造过程、生产过程、程序过程和其他项目中的子项目的安排。活动可以分为两种类型:AOV网络和AOE网络。

  AOV网络(顶点上的活动):在有向图中,顶点表示活动,有向边u-v表示活动U必须先于活动v

  AOE网络(边网络上的活动):如果在一个加权有向图中,顶点代表阶段,有向边u-v表示活动U必须在活动V之前进行,边上的权重表示活动的成本(如活动的持续时间)。

  在python对numpy的操作中,通常用resize来改变数组的大小,用shape来增加数组的维数。

  知识点10:

  对于X[:0];

  就是取二维数组中第一维的所有数据。

  对于X[:1]

  就是取二维数组中第二维的所有数据。

  关于X[:m:n]

  取二维数组中第M维到第N-1维的所有数据。

  对于X[:0]

  就是取三维矩阵中第一维的所有数据。

  对于X[:1]

  就是把三维矩阵中第二维的所有数据。

  关于X[:m:n]

  取三维矩阵中第M维到第N-1维的所有数据。

  知识点11:

  使用h5py模块读取mat文件

  知识点12:

  简单来说:

如果一个3维矩阵是 2x3x4 的 如果为axis = 0 ,就变成3x4 ,如果 axis = 1 就变成2x4的,如果 axis = 2,就变成2x3的

  python题库中的一个问题:

  __new__和__init__的区别。

  1.__init__在创建实例对象时调用,然后设置对象属性的一些初始值。

  2.__new__在创建实例之前被调用,因为它的任务是创建实例,然后返回它。它是一个静态方法。

  即在__init__之前调用__new__,将__new__的返回值(实例)传递给__init__方法的第一个参数,然后__init__为此实例设置一些参数。(如果类的方法前面有static关键字,则该方法称为静态方法,反之,则为实例方法。静态方法由类拥有,可由对象或类使用。但是,通常建议按类名使用它,因为只要定义了类,就可以使用静态方法,而无需创建类的实例。静态方法只能调用静态变量)

  c题库知识点总结:

  1.C中的析构函数也有一些规则:没有参数;不能过载;构造函数的名字是在类名前加“~”;析构函数不能指定返回类型。

  2.Vector vector//这个vector的元素是一个vector对象。

  3.cin运算符根据以下变量的类型读取数据。

  

输入结束条件: 遇到Enter、Space、Tab键

  终止符的处理:

丢弃

缓冲区中使输入结束的终止符(Enter,Space,Tab)。

  4.如何理解构造函数不能被继承?

  我是这样理解的。如果可以继承,子类的新成员变量如何初始化?

  5.与数组相比,向量容器的优点是可以根据需要

随时自动调整自身的大小以便容下所要放入的元素

。此外,vector还提供了许多操作自身的方法。

  Python题库汇总:

  1、python

map()函数

  Map()将根据提供的函数映射指定的序列。

  Map()函数语法:

  Map(函数,可迭代,)参数:function - function,可迭代的一个或多个序列。

  2、

python支持连续比较

  A b c 相当于 A b 和 b c ,本质上是ASCII码的大小比较。"

  3、

浅拷贝与深拷贝

  浅复制只复制父对象,不复制父对象中的子对象,所以如果A的子对象变了,C也变了,但是父对象变C了,不会变。

  4.tf.gather()的用法

  c语言刷题知识总结:

  

知识点1:

静态数组作为参数传入函数时,会退化为指针,指针是数组的第一个地址,数组的长度信息会丢失。这就是这个语境下的退化概念(与原作相比,丢失了一些信息,所以理解为退化)。这就是为什么在将数组作为参数传递时应该使用

数组的长度也一并传入

  2.知识点:数组在什么情况下写出来不会退化成指针?

  知识点三:如何理解函数返回局部变量的值?

  一般来说,局部变量可以在函数中返回。否则,应该使用所有全局变量。如果使用了全局变量,有必要返回吗?那么函数就没有存在的意义了!但是需要注意的是,这里所谓的局部变量的返回是很有内涵的。什么样的值可以不出错地返回?其实就观察一句话:

函数不能返回指向栈内存的指针!

为什么?因为所有返回值都是副本!我们知道,

局部变量的作用域是函数内部

,一旦功能完成,

栈上的局部变量会进行销毁

内存得到释放

。所以,这个时候,函数返回局部变量的值的一个副本,这是没有问题的。但是

如果返回的是局部变量的地址

,那么只返回局部变量

指针的拷贝

。随着函数运行的结束,复制指针指向的堆栈内存已经被释放,所以指向未知区域会导致调用出错。

  知识点4:返回的指针指向堆内存会怎样?

  这样用没问题,

在函数内new空间,在函数外delete空间

。然而,这不是一种好的编程风格。尝试在相同的范围内执行新建和删除操作,否则调用方将不得不手动释放内存。这个界面不好吗?如果你真的需要这样做,把指针传进去!

  知识点四:如何理解字符串双引号是做什么的?(换句话说,char * p;P=abcde 你怎么理解这个操作)

  答:

  1.我申请了一个存储空间。

  2.在字符串末尾添加了“”。

  3.回信地址

  知识点5: KMP是一种字符串匹配算法。详情:https://blog.csdn.net/f1033774377/article/details/82556438

  

BF

算法(通用匹配算法):时间复杂度o(m * n);空间复杂度O(1)

  

KMP

算法:时间复杂度o(m n);空间复杂度O(m)。而KMP算法最大的特点就是指示主串的指针不需要回溯,所以指针不可能变小。

  6.知识点:如何快速绘制

霍(哈)夫曼树

(也叫最优二叉树,特征是加权路径长度最小(WPL是树的加权路径长度的缩写)),主要用于数据压缩和优化编码长度。

  知识点:由多个空格字符组成的字符串是空格字符串(

而空串的是长度为0的串

)。

  知识点8:直接选择排序、堆排序、希尔排序都是不稳定排序算法(

假如有2个数相同,排序前和排序后的这两个数的相对顺序发生了变化就称为不稳定

)

  知识点9:连通图:

  最小生成树:对于

带权连通无向图

G中不同的生成树,每棵树边上的权之和可能不同,边上权之和最小的树称为图的最小生成树

  度:一个顶点所连接的边数称为这个顶点的度。

  边数等于顶点数-1的连通图是树。

  没有圈的有向图称为DAG(有向无环图)。

  知识点10:

  知识点11:

  

除号的正负取舍和一般的算数一样

,同符号为正,差符号为负。

  例如:3/16=0 16/-3=-5

  求其余符号的正反选择与

被除数(分子,也就是上半部分)

符号的正反选择相同。

  比如:-3=-3 16%-3=1

  知识点12:

  使用

字符串初始化数组

时,记得使用

数组长度加1

,因为默认情况下字符串末尾有一个 0 。

  知识点13:KMP算法中下一个数组的求解过程举例:

  知识点14: RRDSB树习惯把权重小的节点放在左边,权重大的放在右边。

  知识点15: len(str)计算字符长度时不包括。

  知识点16: substring可以是空字符串。

  知识点17:输出字符串除了printf()函数外,还可以使用puts()函数。该函数的函数原型是

  Int puts(const char*s)注意函数

只接受一个参数

  知识点18:字符串中任意一个字符组成的子序列称为该字符串的子串。注意,这句话是错的。必须是

连续的,连续的,连续的

  知识点19:老题sizeof()和strlen()

  

sizeof()计算出来的包括字符串结尾的

  

strlen()算出来的不包过,即空字符。

。例如:

  输出是:

  知识点20:

重写

是派生类中的虚函数时,要求函数的返回值、函数名、参数个数、类型相同。

  

重载

需要相同的函数名和不同的参数(数字、类型),

与函数返回类型无关。

  知识点21:对于稀疏矩阵中非零元素,行号、列号、元素值可以唯一确定元素。(行,列,值)

  知识点22:C语言中的:%只能用于整数运算。

  知识点23:验证测试(也称有效性测试)以软件系统为基本测试单元。模块和变量属于单元测试。软件子系统属于集成测试单元。

  一棵二叉树的知识点24:

前序和中序

可以唯一确定这棵二叉树。

中序和后序

可以唯一确定这个二叉树。

  知识点25:罗马计数规则

  知识点26:大端,小端。

  知识点27: SETW () W表示宽度

  scanf()函数的知识点28:

第一个参数是格式字符串

,指定输入格式,根据格式说明符解析输入对应位置的信息,存储在变量参数表中对应指针指向的位置。每个指针都要求非空,与字符串中的格式字符一一对应。

  

这里注意

:如果scanf中的%d是连续书写的,比如" %d% d ",输入数据时,数据可以不用逗号分隔,而只能是3354 "2(空格)3(制表符)4 "或" 2(制表符)3(。如果是“%d,%d,%d”,则需要在输入数据时加上“,”如“2,3,4”。

  知识点29:浮点数在计算机中如何表示?

  数据库知识点总结:

  知识点一:什么是关系数据库?

LeetCode刷题笔记,leetcode题库答案