当前位置:首页 > 题解目录 > 正文内容

【题解】链表操作

亿万年的星光4年前 (2022-01-19)题解目录3776

【题目描述】

给定一个N个数的数组,M次操作,每次操作为下列操作之一。求最后的数组。

操作1:在第X个数之后插入一个数Y。

操作2:删除第X个数。

操作3:对区间[XY]进行排序。

操作4:对区间[XY]进行翻转。

操作5:删除区间[XY]中值为Z的数。

【输入描述】

第一行两个整数N,M(N,M≤100000)含义见试题描述。

第二行N个整数,表示原来的数组。

接下来M行,每行第一个数OPT,表示操作类型。

对于操作1,接下来两个数X,Y,含义见题面描述,保证0≤X≤当前数的个数,若X=0,表示在数组开头插入。

对于操作2,接下来一个数X,含义见题面描述,保证1≤X≤当前数的个数。

对于操作3,接下来两个数X,Y,含义见题面描述,保证1≤X≤Y≤当前数的个数,保证操作3不超过10个。

对于操作4,接下来两个数X,Y,含义见题面描述,保证1≤X≤Y≤当前数的个数,保证操作4不超过10个。

对于操作5,接下来三个数X,Y,Z,含义见题面描述,保证1≤X≤Y≤当前数的个数,保证操作5不超过10个。

【输出描述】

输出若干个数,表示最后的数组。

【样例输入】

5 5
1 4 3 2 5
3 2 4
4 4 5
5 2 3 2
5 2 3 1
1 0 9


【样例输出】

9 1 3 5 4


【题目分析】

  1. 不建议使用链表操作,建议使用vector来操作


【参考答案】

#include<bits/stdc++.h>
using namespace std;
int n,m,c,opt,x,y,z;
vector<int> v;
void fun()
{
	for(int i=x-1;i<y;i++)
	{
		if(v[i]==z) v.erase(v.begin()+i);
	}
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>c;
		v.push_back(c);
	}
	for(int i=1;i<=m;i++)
	{
		cin>>opt;
		if(opt==1)
		{
			cin>>x>>y;
			v.insert(v.begin()+x,y);
		}
		if(opt==2)
		{
			cin>>x;
			v.erase(v.begin()+x);
		}
		if(opt==3)
		{
			cin>>x>>y;
			sort(v.begin()+x-1,v.begin()+y);
		}
		if(opt==4)
		{
			cin>>x>>y;
			reverse(v.begin()+x-1,v.begin()+y);
		}
		if(opt==5)
		{
			cin>>x>>y>>z;
			fun();
		}
	}
	for(int i=0;i<v.size();i++) cout<<v[i]<<" ";
	return 0;
}


    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    分享给朋友:

    相关文章

    【算法】最短路径

    【算法】最短路径

    【题目描述】下图表示从城市A到城市H的交通图。从图中可以看出,从城市A到城市H要经过若干个城市。现在找出一条经过城市最少的一条路线。【输入描述】第一行一个整数n,表示几个城市。接下来2~n+1行,表示...

    字符全排列

    【题目描述】给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。我们假设对于小写字母有‘a’ <‘b’ < … <‘y’<‘z’,而且给定的字符串中的字母已经按照...

    数列

    数列

    【题目描述】有一个分数序列求出这个序列的前n项和,结果保留两位小数。(注意,不用通分,单项相加即可)【输入描述】一个数字,N【输出描述】前N项的和【样例输入】10【样例输出】16.48【题目分析】(1...

    【题解】最多次数

    【题目描述】小蓝有一个字符串 s,他特别喜欢由以下三个字符组成的单词:l,q,b,任意顺序都可以,一共有 6 种可能:lqb、lbq、qlb、qbl、blq、bql。现在...

    【题解】密码截获

    【题目描述】Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码 进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解。...

    【题解】使每位学生都有座位的最少移动次数

    【题目描述】一个房间里有 n 个 空闲 座位和 n 名 站着的 学生,房间用一个数轴表示。给你一个长度为 n&...