开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 6 天,点击查看活动详情
选择题
对于顺序结构,访问节点结点的时间复杂度为O(1);最坏的情况下,如果在表头增加节点的时候,时间复杂度为O(N),因为会涉及到数据的移动。
单链表不能从当前节点往前访问,这是因为单链表的结构是从当前节点链接到后一个节点。
看图,无论是什么顺序进行链接,必须是最后一个改变
p->next。
设栈的最小容量为n,初始为0.
- 栈中的元素:A、B。出栈B。n=2
- 栈中的元素:A、C、D。出栈D。n=3
- 栈中的元素:A、C。出栈C。n=3
- 栈中的元素:A、E、F。出栈F。n=3
- 栈中的元素:A、E。出栈E。n=3
- 栈中的元素:A。出栈A。n=3 所以最小容量为3。
if:rear>front
len=rear-front
else
len=rear+N-front
合并一下就可以用一个式子来求出。选B
节点的度为该节点是否有孩子节点,有一个度就是1,两个就是2,没有就是0. 二叉树的左右子树是确定的,不能交换左右子树。 满二叉树:每一层节点的数目都达到最大。 完全二叉树:除最后一层外,每一层节点的数目都达到最大值,且最后一层的所有节点都位于左边。
平衡二叉树也是二叉搜索树,它的左右子树高度差的绝对值不大于1;在插入的时候,要注意旋转调整,使二叉树一直满足该性质。
小堆建好之后的二叉树形式如下图:那么它的中序遍历为:83251647
数学分析法不是一个常用的方法
每次快速排序完成之后,都会有一个 关键值(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