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.在字符串末尾添加了“