L2-002 链表去重(链表+模拟)
Posted MangataTS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了L2-002 链表去重(链表+模拟)相关的知识,希望对你有一定的参考价值。
题目链接
https://pintia.cn/problem-sets/994805046380707840/problems/994805072641245184
思路
我们用一个map
记录地址映射,在键的位置记录当前地址,值的位置记录下一个地址的位置,然后我们用一个 vis
数组标记我们的值的绝对值是否被加入了 win
链表,如果没有加入那么我们就将其加入 loser
链表,这样的话就将链表去重了,最后实现一个打印操作即可,注意这里我们可以通过scanf
的格式化输出%05d
来方便我们补前缀0
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
int n,s;
int a[N];
bool vis[N];
map<int,int> mark;
void print(vector<int> & V)
int p,np;
for(int i = 0,l = V.size();i < l; ++i)
p = V[i];
if(i < l) np = V[i + 1];
if(i == l - 1) printf("%05d %d -1\\n",p,a[p]);
else printf("%05d %d %05d\\n",p,a[p],np);
int main()
vector<int> win,loser;
scanf("%d %d",&s,&n);
int p,k,nex,np;
for(int i = 1;i <= n; ++i)
scanf("%d %d %d",&p,&k,&nex);
mark[p] = nex;
a[p] = k;
p = s;
while(p != -1)
if(vis[abs(a[p])]) loser.push_back(p);
else win.push_back(p);
vis[abs(a[p])] = true;
p = mark[p];
print(win);
print(loser);
return 0;
以上是关于L2-002 链表去重(链表+模拟)的主要内容,如果未能解决你的问题,请参考以下文章