【题解】【AcWing】1587. 链表重复数据删除
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. 源端重复数据删除和目标端重复数据删除 源端消重在数据源进行,传输的是已经消重后的数据,能够节省网络带宽,但会占用大量源端系统资源. ...
- Hyper-v Server重复数据删除技术
Hyper-v Server重复数据删除技术 老衲听说windows Server 2012中新增了一项技术叫做重复数据删除,据说这个重复数据删除可以大大的节省磁盘的空间,下面我们来看看什么是重复数据 ...
- EMC升级Celerra 支持闪存及重复数据删除
WatchStor独家译文]虽然在上周接受采访时,EMC公司存储部门总裁David A.Donatelli就表示EMC近期将发布大量新品,但直到美国时间上周末,EMC才正式发布了其升级Celer ...
- Windows 8.1 重复数据删除
我们知道windowsserver2012中有一种功能,重复数据删除,实际上在windows8.1中也支持,以下就是就如何在windows8.1中开启重复数据删除 概述如下: 1.到http://sd ...
- 重复数据删除(De-duplication)技术研究
http://godchenmeng.iteye.com/blog/752567 继续推荐刘爱贵同学的重复数据删除dedupe 转载于:https://www.cnblogs.com/cloudsto ...
- Windows 8.1 重复数据删除——规划部署(二)
一.规划部署目标 Windows 8.1&Server 2012 的重复数据删除设计为安装到主要数据卷上,而无需添加任何附加的专用硬件.这意味着你可以安装和使用该功能,而不会影响服务器上 ...
- 重复数据删除将成标配功能
因为嗓子发炎,Data Domain首席科学家及创始人李凯在回答记者提问时语速十分缓慢,但语气十分坚定:"创立Data Domain公司的初衷就是想寻找一种能够替代磁带的产品或解决方 ...
- 一站式VDI部署教程(3)配置存储分层和重复数据删除功能
1)打开添加服务器角色和功能向导,点击下一步 2)勾选数据删除重复功能 3)点击安装 4)安装完成后,点击存储池,然后新建存储池. 5)输入名称,并点击下一步 6)勾选要加入的磁盘,然后点击下一步. ...
- 重复数据删除:块级技术VS.字节级技术
重复数据删除技术能够识别重复的数据,消除冗余,减少需转移或存储的数据的总体容量.在本文中,我将分别对这两种技术加以评论.与块级技术相比,字节级删除技术对数据的检查更加细微,精度更高,但同时需要更加了解 ...
最新文章
- IDEA 配置 Docker
- SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
- 基于linux使用mysql二进制包安装mysql
- Ioc的推荐实现方式
- Flink 助力美团数仓增量生产的应用实践
- DOCKER windows安装
- 详解手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
- Windows Phone开发的十几篇文章(待续)
- Ffmpeg下载WINDOWS、MAC编译结果
- PHP 开发者如何做代码审查?
- 纪念非线性光学诞生:Peter Franken和非线性光学
- 区块链数据库SunlightDB BI智能标签
- DRAM原理-Storage Cell
- easyui 如何添加事件
- 猿创征文|Python基础——Visual Studio版本——第五章 文件I/O
- 学习经历感悟——基础 > 语言
- jmeter学习问题记录
- 用Rdkit把化学结构式的Smiles转换为InchI
- 车规级芯片、手机芯片、电脑芯片比较
- 视频太大怎么压缩变小?
热门文章
- 企业微信如何养号,什么情况下可能被封号?
- 典型公司的典型工程师(from http://forum.eet-cn.com)
- 常见词汇背后的故事(1)
- 南财计算机组成原理第一套试卷,南财在线考试《公共英语3级》三套试卷.DOCX
- 华为服务器设置raid0为系统盘,服务器raid0设置
- 云计算模型 按需自助服务_云计算中的按需服务
- 硬盘使用时间可以改吗? 如何修改呢
- SpringBoot整合Redisson
- 基于云平台的光伏监控系统是怎样的?
- 360度安全卫士v3.3正式版下载!