这道题的题目说的有点不清楚
链接:https://ac.nowcoder.com/acm/problem/14661
来源:牛客网
一开始该容器为空,有以下七种操作。
1 从前面插入元素a
2 从前面删除一个元素
3 从后面插入一个元素
4 从后面删除一个元素a
5 将整个容器头尾翻转
6 输出个数和所有元素
7 对所有元素进行从小到大排序
我们可以用双端队列来实现,下面是基本操作:
d.push_back()或d.push_front() 从前面或者后面插入
d.pop_back()或d.pop_front() 从前面或者后面删除
d.size() 返回d的大小
d.clear()、d.empty() 清空、判断是否为空
可用sort(d.begin(), d.end())进行排序
#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
deque<int> d;
int main() {
int n, m;cin >> n >> m;
while (m--) {
int tmp;cin >> tmp;
if (tmp == 1) {
int a;cin >> a;
d.push_front(a);
}
else if (tmp == 2) {
d.pop_front();
}
else if (tmp == 3) {
int a;cin >> a;
d.push_back(a);
}
else if (tmp == 4) {
d.pop_back();
}
else if (tmp == 5) {
reverse(d.begin(), d.end());//学到了新东西
}
else if (tmp == 6) {
cout << d.size() << endl;
cout << d[0];
for (int i = 1;i < d.size();i++)
cout << ' ' << d[i];
cout << endl;
}
else if (tmp == 7) {
sort(d.begin(), d.end());
}
}
return 0;
}