2022暑期复习-Day1
Posted Booksort
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022暑期复习-Day1相关的知识,希望对你有一定的参考价值。
目录
选择题
Q1堆是一种有用的数据结构。下列那个关键码序列是一个堆()。
A. 94,31,53,23,16,72
B. 94,53,31,72,16,23
C. 16,53,23,94,31,72
D. 16,31,23,94,53,72
堆要满足其中的任何一个父亲和孩子都要满足大根堆或者小根堆,且只能满足一种情况,不能存在堆中即又小堆又有大堆存在
选项A
选项B
选项C
选项D
答案:D
Q2 将关键字序列 50,40,95,20,15,70,60,45,80 调整成一个小根堆,堆结构是15,20,60,45,40,70,95,50,80 ,该说法正确吗?()
A.正确
B.不正确
将数组构建成堆的算法是,
从第一个非叶子节点 (n-2)/2 开始,依次循环到根节点,并且每次都进行向下调整算法
时间复杂度为O(N*logN)
答案:A
Q3 已知序列 25, 13, 10, 12, 9 是大根堆,在序列尾部插入新元素 18 ,将其再调整为大根堆,调整过程中元素之间进行的比较次数是( )
A.1
B.2
C.4
D.5
利用向上调整算法,从尾部新元素开始,依次与父节点比较,直到比完根节点。
答案:A
Q4 已知关键字序列 5,8,12,19,28,20,15,22 是小根堆(最小堆),插入关键字 3 ,调整后得到的小根堆是()
A. 3,5,12,8,28,20,15,22,19
B. 3,5,12,19,20,15,22,8,28
C. 3,8,12,5,20,15,22,28,19
D. 3,12,5,8,28,20,15,22,19
答案:A
Q5 在堆排序的过程中,建立一个堆的时间复杂度是()
A. O(n)
B. O(logn)
C. O(nlogn)
D. O(n2)
从下往上进行向下调整算法,每一个元素比较H-当前层数
H(t) = 1*(h-1)+2*(h-2)+4*(h-3)…
答案:A
编程题
Q6
class Solution
public:
bool isAnagram(string s, string t)
size_t len = s.size();
if(s.size()!=t.size())
return false;
int arr[26]=0;
for(int i = 0;i < len; i++)
arr[s[i]-'a'] +=1;
arr[t[i]-'a'] -=1;
int count=0;
for(int i =0;i<26;i++)
if(arr[i]==0)
count++;
return count==26;
;
Q7
char arr[] = 'a','e','i','o','u';
class Solution
public:
bool findtrue(char c)
for(int i=0;i<5;i++)
if(c==arr[i]||c==arr[i]-32)
return true;
return false;
bool halvesAreAlike(string s)
int count = 0;
int len = s.size();
for(int i = 0; i<len ;i++)
if(findtrue(s[i]))
if(i<len/2)
count++;
else
count--;
return count==0;
;
以上是关于2022暑期复习-Day1的主要内容,如果未能解决你的问题,请参考以下文章