jfskjl

196 阅读3分钟

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

💦第八题 初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为()

A 8 3 2 5 1 6 4 7 B 3 2 8 5 1 4 6 7 C 3 8 2 5 1 6 7 4 D 8 2 3 5 1 4 7 6

这道题是考察建堆

这道题的答案是A

💦第九题 解决散列法中出现冲突问题常采用的方法是()

A 数字分析法、除余法、平方取中法 B 数字分析法、除余法、线性探测法 C 数字分析法、线性探测法、多重散列法 D 线性探测法、多重散列法、链地址法

数字分析的不是常用的方法,除余法不是解决冲突,是映射发生

线性探测法、多重散列法、链地址法才是常用的方法

这道题的答案是D

💦第十题 下列选项中,不可能是快速排序第2趟排序结果的是 ()

A 2,3,5,4,6,7,9 B 2,7,5,6,4,3,9 C 3,2,5,4,7,6,9 D 4,2,3,5,7,6,9

快速排序是找到一个关键值,然后左边小于他,右边大于他,然后继续递归排序

所以C是不可以的

这道题的答案是C

编程题 🔥第一题 链接:字符串反转

解题思路 字符串反转,需要交换首尾字符,设置首尾两个位置start,end,每次交换首尾字符,然后start++, end–,直到start,end相遇,反转完成。

或者直接调用库函数里面的交换

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 🔥第二题 链接:公共子串计算

解题思路 求最大公共子串,使用递推实现 假设 x(i): 字符串第i个字符 y(j): 字符串第j个字符 dp[i][j]: 以x(i),y(j)结尾的最大子串长度 比如:x: “abcde” y:“bcdae” dp[2][1]: 以x(2),y(1)结尾的最大子串长度 即:x遍历到"abc", y遍历到"bc", 都以字符’c’结尾时最大公共子串为"bc" 故:当计算dp[i][j]时,首先看x(i),y(j)的值: (1): x(i) == y(j) 当前两个字符串结尾的字符相等,dp[i][j] = dp[i-1][j-1] + 1 即个它的长度加1 (2): x(i) != y(j) 当前两个字符串结尾的字符不相等,说明没有以这连个字符结尾的公共子串 即dp[i][j] = 0 (3): dp[0][j] 和 dp[i][0]表示以某个子串的第一个字符结尾,最大长度为1 如果x(0) = = y(j) 或者 x(i) == y(0), 则长度为1,否则为0 当dp中的