首页 > 编程知识 正文

Leetcode刷题,Leetcode刷题笔记

时间:2023-05-05 00:06:46 阅读:223941 作者:979

数据结构之图相关知识点:

知识点1:用什么方法判断一个有向图带有环?

知识点2:说一下什么时候系统会调用拷贝构造函数?

知识点3:说一说拷贝构造函数和重载的= 函数有什么分别在什么时候被调用?

知识点4:谈一谈内核态和用户态

知识点5: 怎么理解python中list数组读取一列和numpy中array读取方式的不同?

知识点6:说一说常见的排序算法的时间复杂度和空间复杂度,你是死记的还是理解了呢?如果理解了,说说你的理解?

 

平衡二叉树的左右子树高度之差的绝对值不超过1.

知识点7:增强for循环使用场景

答:如果只是操作集合中元素而不使用索引的话,可以使用此方法。

如果需要使用索引进行其他操作的话,建议用普通for循环。

格式:  for(数据类型变量名被遍历的集合(collection)或者数组)

知识点7:你怎么理解SVM核函数的作用?

任意两个样本点在扩维后的空间的内积,如果等于这两个样本点在原来空间经过一个函数后的输出,那么这个函数就叫核函数。

知识点8: 说一说怎么理解 自然语言处理中使用one-hot(独热编码)的不当之处?

也就是说one-hot编码仅仅是将词符号化,不包含任何语义信息。

知识点9:说一说你对词的分布式表示的理解.

 

 知识点10: 说一说预编译阶段做了哪些事,编译阶段做了那些事?

答:预编译又称为预处理,是做些代码文本的替换工作。处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等,就是为编译做的预备工作的阶段,主要处理#开始的预编译指令。

用编译程序产生目标程序的动作。 编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。编译程序(Compiler,compiling program)也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。

知识点11:数据的存储结构包括哪几类?逻辑结构包括哪几类?

存储结构包括:线性、链式

逻辑结构包括:集合、表、常见的树(1对多),图(多对多)

知识点12:c++中引用和指针的区别?

C++ 引用与指针的比较

引用是 C++ 中的概念,初学者容易把引用和指针混淆一起。

一下程序中,n 是m的一个引用(reference),m 是被引用物(referent)。

int m; int &n = m;

n 相当于 m 的别名(绰号),对 n 的任何操作就是对m的操作。

所以 n 既不是m的拷贝,也不是指向 m 的指针,其实n就是 m 它自己。

引用的规则:

 

 

知识点13:c++中虚函数和纯虚函数的区别?

 

(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。(2)不能有 NULL 引用,引用必须与合法的存储单元关联(指针则可以是 NULL)。(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。

首先:强调一个概念

定义一个函数为虚函数,不代表函数为不被实现的函数。

定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。

定义一个函数为纯虚函数,才代表函数没有被实现。

定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。

纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加 =0: 

知识点14: 怎么输入一个动态的二维数组?

#include<iostream>#include<vector>using namespace std;int main() {int i, j, k;vector<vector<int>> vec(3,vector<int>());for (i = 0; i < 3; i++) {int temp;while (1) {cin >> temp;vec[i].push_back(temp);if (cin.get() == 'n') break;}};for (int i = 0; i < vec.size(); i++) for(int j = 0; j < vec[i].size(); j++)cout << vec[i][j];}

知识点15: 讲一讲 C++ sort排序.


知识点16:const int * ,int const *  ,const int * const p讲一讲

答:

知识点17:c++中 pair的应用

答:

算法类知识点:

1、模拟退火算法主要用于什么?

答:主要用于难以准确求出具体解的问题之中,通过多次迭代,它可以不断接近最优解。

2、SVM的的hinge loss表达式会写吗?

答:SVM用到的hinge loss

 

3、经验风险+结构风险是什么?

答:一般来说是 代价函数 + 正则化项

4、讲一讲对数损失函数

5、讲一讲你知道的随机蕨?

随机蕨分类器(Random Ferns Classifier),类似于随机森林(Random Forest),区别在于随机森林的树中每层节点判断准则不同,而随机蕨的“蕨”中每层只有一种判断准则。随机蕨分类器根据样本的特征值判断其分类。从图像元中任意选取两点A和B,比较这两点的亮度值,若A的亮度大于B,则特征值为1,否则为0。每选取一对新位置,就是一个新的特征值。蕨的每个节点就是对一对像素点进行比较。比如取5对点,红色为A,蓝色为B,样本图像经过含有5个节点的蕨,每个节点的结果按顺序排列起来,得到长度为5的二进制序列01011,转化成十进制数字11。这个11就是该样本经过这个蕨得到的结果。

6、讲一讲算法的特性

   注意:0到多个输入,不一定非要有输入,但至少要有一个输出.

7、你如果是一名算法工程师,你觉得你写的算法实现应该有什么基本要求?

8、dijkstra和floyed分别适用于什么场景

Dijkstra算法只适用于正权图的单源最短路。

弗洛伊德算法是解决任意两点间的最短路径的一种算法,可以正确处理无向图或有向图或负权(但不可存在负权回路,也就是这两种情况不能同时出现)的最短路径问题,同时也被用于计算有向图的传递闭包。

附:单源就是从一个点到所有其他点的最短路径,得到的结果是一个数组,表示某个点到其他点的最短距离。常用的算法有Dijkstra算法和Bellmanford算法。多源最短路径,计算所有点到其他点的最短距离,得到的是一个矩阵。常用的算法有Floyd算法。

9、你怎么理解Bayesian公式?

我们把P(A)称为"先验概率"(Prior probability),即在B事件发生之前,我们对A事件概率的一个判断。P(A|B)称为"后验概率"(Posterior probability),即在B事件发生之后,我们对A事件概率的重新评估。P(B|A)/P(B)称为"可能性函数"(Likelyhood),这是一个调整因子,使得预估概率更接近真实概率。

所以,条件概率可以理解成下面的式子:后验概率 = 先验概率 x 调整因子

这就是贝叶斯推断的含义。我们先预估一个"先验概率",然后加入实验结果,看这个实验到底是增强还是削弱了"先验概率",由此得到更接近事实的"后验概率"。在这里,如果"可能性函数"P(B|A)/P(B)>1,意味着"先验概率"被增强,事件A的发生的可能性变大;如果"可能性函数"=1,意味着B事件无助于判断事件A的可能性;如果"可能性函数"<1,意味着"先验概率"被削弱,事件A的可能性变小。

10、python中zip函数的用法

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

>>>a = [1,2,3]>>> b = [4,5,6]>>> c = [4,5,6,7,8]>>> zipped = zip(a,b) # 打包为元组的列表[(1, 4), (2, 5), (3, 6)]>>> zip(a,c) # 元素个数与最短的列表一致[(1, 4), (2, 5), (3, 6)]>>> zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式[(1, 2, 3), (4, 5, 6)]

11、怎么把一个string类型的list转换为float list?

答:

12、np.array()和np.asarray()区别?

13、tf.concat()和np.concate()的区别?

矩阵论知识点:

知识点1: 广义逆矩阵定理

广义逆一般用符号

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。