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

【题解】链表操作

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

【题目描述】

给定一个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;
}


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

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

    分享给朋友:

    相关文章

    【题解】Power Strings

    【题目描述】给定若干个长度 ≤106 的字符串,询问每个字符串最多是由多少个相同的子字符串重复连接而成的。如:ababab 则最多有 3 个 ab 连接而成。【输入描述】输入若干行,每行有一...

    【题解】变换数组

    【题目描述】输入一个数组 a,包含有 n 个元素 a1,a2,⋯,an。对这个数组进行 m 次变换,每次变换会将数组 a ...

    【题解】智力大冲浪

    【题目描述】小伟报名参加中央电视台的智力大冲浪节目。本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元。先不要太高兴!因为这些钱还不一定都是你的。接下来主持人宣布了比赛规则:首...

    【题解】括号匹配问题

    【题目描述】在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括...

    单词提取

    【题目描述】毛毛是个粗心的孩子,有一天在写英语作文时,不小心把不属于英文的字符混了进去。现在请帮他筛选出正常的英语单词。【输入描述】一行英语句子,大小写不定。以英文句点结尾。【输出描述】 删...

    分数求和

    题目描述】输入n个分数并对他们求和,并用最简形式表示。所谓最简形式是指:分子分母的最大公约数为1;若最终结果的分母为1,则直接用整数表示。如: 5/6  、 10/3  均是最简形...