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、pythonmap()函数
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.在字符串末尾添加了“\0”。
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)计算字符长度时不包括\0。
知识点16: substring可以是空字符串。
知识点17:输出字符串除了printf()函数外,还可以使用puts()函数。该函数的函数原型是
Int puts(const char*s)注意函数只接受一个参数。
知识点18:字符串中任意一个字符组成的子序列称为该字符串的子串。注意,这句话是错的。必须是连续的,连续的,连续的。
知识点19:老题sizeof()和strlen()
sizeof()计算出来的包括字符串结尾的\0
strlen()算出来的不包过\0,即空字符。。例如:
输出是:
知识点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:浮点数在计算机中如何表示?
数据库知识点总结:
知识点一:什么是关系数据库?
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。