【C++】刷题日记(day4)

简介: 刷题是我们学习编程的一个重要模块,刷题能帮助我们巩固我们学习的知识,能够增强我们的编程水平. 本文总共讲了5题选择题,以及两道牛客编程题,希望大家读后能够有所收获!

5c3890b9ff3c1c4d11ab82221a08bb78.jpg

自信人生二百年,会当水击三千里!

一、选择题

1、下面的排序方法中,关健字比较次数与初始排列无关的是()

A、直接选择排序

B、希尔排序

C、直接插入排序

D、冒泡排序

答案:A。分析:

元素的移动次数与关键字的初始排序无关的是:归并排序、基数排序

元素的比较次数与初始序列无关的是:选择排序、基数排序

算法的时间复杂度与初始序列无关的是:堆排序、归并排序、选择排序、基数排序


2、在有序双向链表中定位删除一个元素的平均时间复杂度为()

A.0(1)

B.O(N)

C.0(logN)

D.0(N*logN)

答案:B。分析:链表只能顺序查找,O(N)的单次查找,O(1)的删除时间复杂度。所以综合就是O(N)。

3、在一个以 h 为头指针的单循环链表中,p指针指向链尾结点的条件是()

p->data==-1

p->next==NULL

p->next->next==h

p->next==h

答案:D。分析:p->next==head时,就代表p指针指向链尾结点的条件是。


4、已知一个线性表(38,25,74,63,52,48),假定采用散列函数h(key)=key%7计算散列地址,并散列存储在散列表A【0...6】中,若采用线性探测方法解决冲突,则在该散列表上进行等概率成功查找的平均查找长度为

A.1.5

B.1.7

C.2.0

D.2.3

已知一个线性表(38,25,74,63,52,48),假定采用散列函数h(key)=key%7计算散列地址,并散列存储在散列表A【0...6】中,若采用线性探测方法解决冲突,则在该散列表上进行等概率成功查找的平均查找长度为

A.1.5

B.1.7

C.2.0

D.2.3

image.png

5、若用数组SI...n]作为两个找S1和S2的存储结构,对任何一个栈只有当S全满时才不能做入找操作。为这两个栈分配空间的最佳方案是

A. S1的栈底位置为0,s2的栈底位置为n

B.S1的栈底位置为0,s2的找底位置为n/2

C.S1的栈底位置为1,S2的栈底位置为n/2

答案:A。分析:两个栈的栈底一个在数组第一个元素,朝着数组正方向增长另一个在数组最后一个元素,朝着数组索引减小的方向增长。当两个栈的栈顶相等是,表明数组满了,不能继续入栈。


二、编程题


1、小易的升级之路

image.png

代码分析:

#include<iostream>#include<algorithm>usingnamespacestd;
constintN=1e5+10;
ints[N] = {0};
intmain()
{
intn, a;
while (cin>>n>>a)
{
intsum=a;
for (inti=0; i<n; i++)
{
cin>>s[i];
}
for (inti=0; i<n; i++)
{
if (a>=s[i])
{
a+=s[i];
}
else{
intd=0;
intm=a;
while (a)
{
d=s[i] %a;
s[i] =a;
a=d;
}
a=m;
a+=s[i];
}
}
cout<<a<<endl;
}
return0;
}

2、找出字符串中第一次只出现一次的字符


image.png

代码示例:

#include<iostream>#include<string>usingnamespacestd;
constintN=1e6+10;
ints[N];
inta[300] = {0};
intmain()
{
stringc;
cin>>c;
intflag=0;
for (inti=0; i<c.size(); i++)
{
a[c[i]] ++;
}
for (inti=0; i<c.size(); i++)
{
if (a[c[i]] ==1)
    {
cout<<c[i] ;
flag=1;
break;
    }
}
if (flag==0) cout<<-1;
return0;
}

总结

本文总共讲了5题选择题,以及两道牛客编程题,希望大家读后能够有所收获!



相关文章
|
算法 C语言 C++
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
从C语言的使用转换到C++(上篇)——刷题、竞赛篇
270 0
|
存储 C++
【五一创作】C++刷题 【入门4】数组
【五一创作】C++刷题 【入门4】数组
108 0
|
机器学习/深度学习 存储 人工智能
【c++百日刷题计划】 ———— DAY12,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY12,奋战百天,带你熟练掌握基本算法
209 0
|
5月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
5月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
6月前
|
C语言 C++
【C语言/C++】牛客网刷题训练-12
【C语言/C++】牛客网刷题训练-12
|
6月前
|
存储 自然语言处理 C++
刷题用到的非常有用的函数c++(持续更新)
刷题用到的非常有用的函数c++(持续更新)
84 1
|
存储 C语言 C++
【C/C++刷题——leetcode】查找字符串中最大的子串
【C/C++刷题——leetcode】查找字符串中最大的子串
302 0
|
机器学习/深度学习 人工智能 C++
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
189 0
【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
|
存储 算法 C++
【c++百日刷题计划】 ———— DAY13,奋战百天,带你熟练掌握基本算法
【c++百日刷题计划】 ———— DAY13,奋战百天,带你熟练掌握基本算法
336 0