ABC344E 题解
思路
由题面我们容易联想到链表。
但是我们显然不能直接写个链表,因为这样不仅不好查找,而且写起来也不方便。
这时我们就要使用 map
,设
同理
代码实现
为什么要记录
同时,如果删除的是第一个元素,要将队头进行修改。
Code
#include<iostream>
#include<map>
using namespace std;
map<int,int>mp;
map<int,int>pre;
int q,n,head;
int a[200005];
int main() {
cin>>n;
for(int i=1; i<=n; i++) {
cin>>a[i];
mp[a[i-1]]=a[i];
pre[a[i]]=a[i-1];
}
head=a[1];
cin>>q;
while(q--) {
int opt,x,y;
cin>>opt>>x;
if(opt==1) {
cin>>y;
mp[y]=mp[x];
pre[y]=x;
pre[mp[y]]=y;
mp[x]=y;
} else {
if(head==x) {
y=mp[x];
mp[pre[x]]=y;
pre[y]=pre[x];
head=y;
} else {
y=mp[x];
mp[pre[x]]=y;
pre[y]=pre[x];
}
}
}
int _=head;
while(mp[_]!=0) {
cout<<_<<' ';
_=mp[_];
}
cout<<_;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】