48天笔试强训——第20天

102 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 6 天,点击查看活动详情


选择题

image.png

对于顺序结构,访问节点结点的时间复杂度为O(1);最坏的情况下,如果在表头增加节点的时候,时间复杂度为O(N),因为会涉及到数据的移动。

image.png

单链表不能从当前节点往前访问,这是因为单链表的结构是从当前节点链接到后一个节点。

image.png

看图,无论是什么顺序进行链接,必须是最后一个改变p->nextimage.png

image.png

设栈的最小容量为n,初始为0.

  1. 栈中的元素:A、B。出栈B。n=2
  2. 栈中的元素:A、C、D。出栈D。n=3
  3. 栈中的元素:A、C。出栈C。n=3
  4. 栈中的元素:A、E、F。出栈F。n=3
  5. 栈中的元素:A、E。出栈E。n=3
  6. 栈中的元素:A。出栈A。n=3 所以最小容量为3。

image.png

if:rear>front
len=rear-front
else
len=rear+N-front
合并一下就可以用一个式子来求出。选B

image.png

节点的度为该节点是否有孩子节点,有一个度就是1,两个就是2,没有就是0. 二叉树的左右子树是确定的,不能交换左右子树。 满二叉树:每一层节点的数目都达到最大。 完全二叉树:除最后一层外,每一层节点的数目都达到最大值,且最后一层的所有节点都位于左边。

image.png

平衡二叉树也是二叉搜索树,它的左右子树高度差的绝对值不大于1;在插入的时候,要注意旋转调整,使二叉树一直满足该性质。 image.png

image.png

小堆建好之后的二叉树形式如下图:那么它的中序遍历为:83251647 image.png

image.png

数学分析法不是一个常用的方法

image.png

每次快速排序完成之后,都会有一个 关键值(k) 把这一组数字分为左右两个部分,假如是升序的话,那么左边小于它,右边大于它。

  • A:第一次k可以为9,第二次k为7
  • B:第一次k可以为9,第二次k为7
  • C:第一次k可以为9,第二次k无论为哪一个都不符合条件。
  • D:第一次k可以为9,第二次k为7

编程题

字符串反转

这一题直接双指针进行解决就可以,从头从尾开始遍历交换即可,当然可以直接用reverse函数直接进行逆置

公共子串计算

还是动态规划,f[i][j]表示所有stra以i结尾,strb以j结尾的公共子串的最大值,对于状态方程的计算: 我们以stra[i]与strb[j]是否相等作为分割;1,stra[i]==strb[j],那么f[i][j]=f[i-1][j-1]+1 2,不相等,f[i][j]=0