1. 常见问题整理

1. 矩阵的特征值

      构造|A-λE|=0方程;-->求解出λ1、λ2...λn; -->λi即为特征值--> 求解特征解

2. 卷积:给定输入图像尺寸H*W及卷积核大小F*F、步长S、padding等,计算输出图像的尺寸;

  h_out = (H-F+2*P)/S +1

  w_out = (W-F+2*P)/S+1

3. 快速排序的复杂度计算

 3.1 时间复杂度

 1.) 常数阶O(1)

    无论代码执行了多少行,只要是没有循环等复杂结构,那这个代码的时间复杂度就都是O(1),如:

1 int i = 1;
2 int j = 2;
3 ++i;
4 j++;
5 int m = i + j;
View Code

     上述代码在执行的时候,它消耗的时候并不随着某个变量的增长而增长,那么无论这类代码有多长,即使有几万几十万行,都可以用O(1)来表示它的时间复杂度。

  2.) 对数阶O(logN)

1 int i = 1;
2 while(i<n)
3 {
4     i = i * 2;
5 }
View Code

  从上面代码可以看到,在while循环里面,每次都将 i 乘以 2,乘完之后,i 距离 n 就越来越近了。我们试着求解一下,假设循环x次之后,i 就大于 2 了,此时这个循环就退出了,也就是说 2 的 x 次方等于 n,那么 x = log2^n
也就是说当循环 log2^n 次以后,这个代码就结束了。因此这个代码的时间复杂度为:O(logn)

3.) 线性对数阶O(nlogN)

 线性对数阶O(nlogN) 其实非常容易理解,将时间复杂度为O(logn)的代码循环N遍的话,那么它的时间复杂度就是 n * O(logN),也就是了O(nlogN)。

就拿上面的代码加一点修改来举例:

for(m=1; m<n; m++)
{
    i = 1;
    while(i<n)
    {
        i = i * 2;
    }
}
View Code

4.) 平方阶O(n²)

平方阶O(n²) 就更容易理解了,如果把 O(n) 的代码再嵌套循环一遍,它的时间复杂度就是 O(n²) 了。
举例:

1 for(x=1; i<=n; x++)
2 {
3    for(i=1; i<=n; i++)
4     {
5        j = i;
6        j++;
7     }
8 }
View Code

这段代码其实就是嵌套了2层n循环,它的时间复杂度就是 O(n*n),即 O(n²)
如果将其中一层循环的n改成m,即:

for(x=1; i<=m; x++)
{
   for(i=1; i<=n; i++)
    {
       j = i;
       j++;
    }
}
View Code

那它的时间复杂度就变成了 O(m*n)

5.) 立方阶O(n³)K次方阶O(n^k)

参考上面的O(n²) 去理解就好了,O(n³)相当于三层n循环,其它的类似。

除此之外,其实还有 平均时间复杂度、均摊时间复杂度、最坏时间复杂度、最好时间复杂度 的分析方法,有点复杂,这里就不展开了。

4.) 贝叶斯概率

Coding编程:

1. Task][2021-Q1] A string in Matrix

Problem
Whether the matrix contains the given string in order. The start position can be anywhere inside the matrix and each step can *only* move *one* grid to the up, down, left or right.
For example, the following matrix contains a path “bfce” which is marked with bold
[["a","*b*","c","e"],
 ["s","*f*","*c*","s"],
 ["a","d","*e*","e"]]
But there is no such “abfb” string, because a position cannot be reentered once been recorded.

2. rand5() 已知,计算rand()7

posted @ 2021-12-16 16:00  赵家小伙儿  阅读(39)  评论(0编辑  收藏  举报