1587. 链表重复数据删除

原题传送:AcWing 1587. 链表重复数据删除

给定一个单链表 LLL ,链表上的每个节点都存有一个键值,你应该删掉其中拥有重复键值绝对值的节点。

也就是说,对于每个值 KKK ,只保留键值或键值绝对值为 KKK 的第一个节点。

同时,被删掉的节点也应保存在一个单独的链表中。

例如,给定 LLL 为21→-15→-15→-7→15,则删除重复数据后的链表为21→-15→-7,已删除链表为-15→15

输入格式

第一行首先包含头节点地址,然后包含节点总数 NNN 。

节点地址用一个 555 位非负整数表示(可能有前导 000 ),NULL用 −1−1−1 表示。

接下来 NNN 行,每行描述一个节点的信息,格式如下:

Address Key Next

其中Address是节点地址,Key是一个整数表示键值,Next是下一个节点的地址。

输出格式

首先按顺序输出结果链表,然后按顺序输出删除链表。

每个节点占一行,格式与输入相同。

数据范围

1≤N≤1051 \le N \le 10^51≤N≤105 ,
节点键值的绝对值不会超过 10410^4104 。

输入样例:

00100 5
99999 -7 87654
23854 -15 00000
87654 15 -1
00000 -15 99999
00100 21 23854

输出样例:

00100 21 23854
23854 -15 99999
99999 -7 -1
00000 -15 87654
87654 15 -1

思路:

st标记绝对值是否重复出现。

题解:

#include<bits/stdc++.h>using namespace std;struct node
{string addr, next;int key, data;
};unordered_map<string, node> m;
unordered_map<int, bool> st;int main()
{char head[10];int n;scanf("%s%d", head, &n);for(int i = 1; i <= n; i++){char addr[10], next[10];int key;scanf("%s%d%s", addr, &key, next);m[addr] = {addr, next, key, abs(key)};}vector<node> v1, v2;for(string i = head; i != "-1"; i = m[i].next){if(!st[m[i].data]){v1.push_back(m[i]);st[m[i].data] = true;}   else{v2.push_back(m[i]);}}for(int i = 0; i < v1.size() - 1; i++)printf("%s %d %s\n", v1[i].addr.c_str(), v1[i].key, v1[i + 1].addr.c_str());printf("%s %d -1\n", v1[v1.size() - 1].addr.c_str(), v1[v1.size() - 1].key);if(v2.size()){for(int i = 0; i < v2.size() - 1; i++)printf("%s %d %s\n", v2[i].addr.c_str(), v2[i].key, v2[i + 1].addr.c_str());printf("%s %d -1\n", v2[v2.size() - 1].addr.c_str(), v2[v2.size() - 1].key);}return 0;
}

【题解】【AcWing】1587. 链表重复数据删除相关推荐

  1. 重复数据删除技术概述

    重复数据删除技术概述 一.   重复数据删除的分类 1.       源端重复数据删除和目标端重复数据删除 源端消重在数据源进行,传输的是已经消重后的数据,能够节省网络带宽,但会占用大量源端系统资源. ...

  2. Hyper-v Server重复数据删除技术

    Hyper-v Server重复数据删除技术 老衲听说windows Server 2012中新增了一项技术叫做重复数据删除,据说这个重复数据删除可以大大的节省磁盘的空间,下面我们来看看什么是重复数据 ...

  3. EMC升级Celerra 支持闪存及重复数据删除

       WatchStor独家译文]虽然在上周接受采访时,EMC公司存储部门总裁David A.Donatelli就表示EMC近期将发布大量新品,但直到美国时间上周末,EMC才正式发布了其升级Celer ...

  4. Windows 8.1 重复数据删除

    我们知道windowsserver2012中有一种功能,重复数据删除,实际上在windows8.1中也支持,以下就是就如何在windows8.1中开启重复数据删除 概述如下: 1.到http://sd ...

  5. 重复数据删除(De-duplication)技术研究

    http://godchenmeng.iteye.com/blog/752567 继续推荐刘爱贵同学的重复数据删除dedupe 转载于:https://www.cnblogs.com/cloudsto ...

  6. Windows 8.1 重复数据删除——规划部署(二)

    一.规划部署目标    Windows 8.1&Server 2012 的重复数据删除设计为安装到主要数据卷上,而无需添加任何附加的专用硬件.这意味着你可以安装和使用该功能,而不会影响服务器上 ...

  7. 重复数据删除将成标配功能

        因为嗓子发炎,Data Domain首席科学家及创始人李凯在回答记者提问时语速十分缓慢,但语气十分坚定:"创立Data Domain公司的初衷就是想寻找一种能够替代磁带的产品或解决方 ...

  8. 一站式VDI部署教程(3)配置存储分层和重复数据删除功能

    1)打开添加服务器角色和功能向导,点击下一步 2)勾选数据删除重复功能 3)点击安装 4)安装完成后,点击存储池,然后新建存储池. 5)输入名称,并点击下一步 6)勾选要加入的磁盘,然后点击下一步. ...

  9. 重复数据删除:块级技术VS.字节级技术

    重复数据删除技术能够识别重复的数据,消除冗余,减少需转移或存储的数据的总体容量.在本文中,我将分别对这两种技术加以评论.与块级技术相比,字节级删除技术对数据的检查更加细微,精度更高,但同时需要更加了解 ...

最新文章

  1. IDEA 配置 Docker
  2. SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
  3. 基于linux使用mysql二进制包安装mysql
  4. Ioc的推荐实现方式
  5. Flink 助力美团数仓增量生产的应用实践
  6. DOCKER windows安装
  7. 详解手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
  8. Windows Phone开发的十几篇文章(待续)
  9. Ffmpeg下载WINDOWS、MAC编译结果
  10. PHP 开发者如何做代码审查?
  11. 纪念非线性光学诞生:Peter Franken和非线性光学
  12. 区块链数据库SunlightDB BI智能标签
  13. DRAM原理-Storage Cell
  14. easyui 如何添加事件
  15. 猿创征文|Python基础——Visual Studio版本——第五章 文件I/O
  16. 学习经历感悟——基础 > 语言
  17. jmeter学习问题记录
  18. 用Rdkit把化学结构式的Smiles转换为InchI
  19. 车规级芯片、手机芯片、电脑芯片比较
  20. 视频太大怎么压缩变小?

热门文章

  1. 企业微信如何养号,什么情况下可能被封号?
  2. 典型公司的典型工程师(from http://forum.eet-cn.com)
  3. 常见词汇背后的故事(1)
  4. 南财计算机组成原理第一套试卷,南财在线考试《公共英语3级》三套试卷.DOCX
  5. 华为服务器设置raid0为系统盘,服务器raid0设置
  6. 云计算模型 按需自助服务_云计算中的按需服务
  7. 硬盘使用时间可以改吗? 如何修改呢
  8. SpringBoot整合Redisson
  9. 基于云平台的光伏监控系统是怎样的?
  10. 360度安全卫士v3.3正式版下载!