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

【题解】链表操作

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

【题目描述】

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


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

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

分享给朋友:

相关文章

【题解】转换字符串的最少操作次数

【题目描述】给你一个字符串 s ,由 n 个字符组成,每个字符不是 'X' 就是 'O' ...

【题解】前缀最大值

【题目描述】求一个数列的所有前缀最大值之和。即:给出长度为n的数列a[i],求出对于所有1<=i<=n,max(a[1],a[2],...,a[i])的和。比如,有数列:666 304 6...

【题解】Power Strings

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

【题解】小X与机器人

【题解】小X与机器人

【题目描述】小X的老师很喜欢围棋。众所周知,围棋的棋盘有19行19列,共有361个交叉点。为方便起见,我们把这些行列按顺序编号为1~19,并用(x, y)表示第x列第y行的位置。例如下图中,A用(16...

猴子吃桃

【题目描述】猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到第N天早上想再吃时...

【算法】滑动窗口2—窗口大小可变

【算法】滑动窗口2—窗口大小可变

对于滑动窗口第二类:窗口大小可变类型 图解如下,类似双指针算法。【解题思想】1、字符串 S 中使用双指针的左右指针技巧,初始化 left = right = 0,把索引的...