NC14661. 简单的数据结构
描述
一开始该容器为空,有以下七种操作。
1 a从前面插入元素a
2 从前面删除一个元素
3 a从后面插入一个元素
4 从后面删除一个元素
5 将整个容器头尾翻转
6 输出个数和所有元素
7 对所有元素进行从小到大排序
输入描述
只有一组数据,第一行n≤50000,m≤200000, a≤100000 代表最大数据数目和操作次数。
接下来每一行一个操作如上描述。保证所有操作合法(不会在容器为空时删除元素)。
6、7操作共计不会超过10次。
输出描述
当执行6操作时,第一行先输出当前的个数,然后从头到尾按顺序输出,每两个元素之间用一个空格隔开,末尾不能有空格。
示例1
输入:
10 9 1 1 3 5 3 4 6 4 5 6 7 6
输出:
3 1 5 4 2 5 1 2 1 5
C++(clang++ 11.0.1) 解法, 执行用时: 322ms, 内存消耗: 2440K, 提交时间: 2023-07-05 09:50:39
#include<bits/stdc++.h> using namespace std; deque <int> q; int main() { int n,m,a,x; cin>>n>>m; while(m--) { cin>>x; if(x==1) cin>>a,q.push_front(a); if(x==2) q.pop_front(); if(x==3) cin>>a,q.push_back(a); if(x==4) q.pop_back(); if(x==5) reverse(q.begin(),q.end()); if(x==6) { cout<<q.size()<<endl; for(int i=0;i<q.size();i++) cout<<q[i]<<" "; cout<<endl; } if(x==7) sort(q.begin(),q.end()); } return 0; }
Python3 解法, 执行用时: 1392ms, 内存消耗: 10576K, 提交时间: 2021-11-13 14:41:19
n,m=map(int,input().split()) a=[] for i in range(m): b=list(map(int,input().split())) if b[0]==1: a.insert(0,b[1]) elif b[0]==2: del a[0] elif b[0]==3: a.append(b[1]) elif b[0]==4: del a[-1] elif b[0]==5: a.reverse() elif b[0]==6: print(len(a)) s="" for j in a: s+=str(j)+" " print(s[:-1]) elif b[0]==7: a.sort()