列表

详情


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()

上一题