腾讯2021校招笔试真题
1、队列操作
【题目描述】
数据结构基础之一——队列
队列有五种基本操作,插入队尾、取出队首、删除队首、队列大小、清空队列。
现在让你模拟一个队列的操作,具体格式参考输入。
输入描述:
第一行输入一个整数T,表示接下来有T组测试数据。
对于每组测试数据:
第一行输入一个整数Q,表示有Q次操作。
接下来Q行,每行输入一种队列操作方式,具体格式如下:
初始状态下队列为空。
插入队尾:PUSH X
取出队首:TOP//仅仅是看一下队首元素,不要把队首元素删除
删除队首:POP
队列大小:SIZE
清空队列:CLEAR
1<=T<=100
1<=Q,x<=1000
保证操作为以上5种的任意一种。
输出描述:
对于每组测试数据:
如果操作为“取出队首”,输出队首元素,如果无法取出,输出“-1”
如果操作为“删除队首”,如果无法删除,输出“-1”
如果操作为“队列大小”,输出队列大小
其他操作无需输出
输入样例:
2
7
PUSH 1
PUSH 2
TOP
POP
TOP
POP
POP
5
PUSH 1
PUSH 2
SIZE
POP
SIZE
输出样例:
1
2
-1
2
1
【解题思路】
按题意描述的根据队列操作进行模拟即可。
【参考代码】
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
scanf("%d", &t);
while (t--) {
int Q, x;
cin >> Q;
queue<int> q;
while (Q--) {
string s;
cin >> s;
if (s == "PUSH") {
scanf("%d", &x);
q.push(x);
}
if (s == "TOP") {
if (!q.empty())
printf("%d\n", q.front());
else
printf("-1\n");
}
if (s == "POP") {
if (!q.empty())
q.pop();
else
printf("-1\n");
}
if (s == "SIZE") {
printf("%d\n", q.size());
}
if (s == "CLEAR") {
while (!q.empty())
q.pop();
}
}
}
return 0;
}
2、第K小子串
【题目描述】 输入一个字符串 s,s 由小写英文字母组成,保证 s 长度小于等于 5000 并且大于等于 1。在 s 的所有不同的子串中,输出字典
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
互联网校招开挂攻略(技术) 文章被收录于专栏
如果你问:“什么时候你才真正觉得接近了秋招?” 那一定是:“收到牛客绿皮书那一刻” 连续六年, 整合各大名企秋招考题 只为做到校招届的【五年高考三年模拟】 20家大厂授权,本次公开 200页笔面试真题解析合集 4大互联网热门岗位 保姆级攻略—你的求职绿卡!
迅雷公司福利 193人发布