map练习-链表去重

L2-002 链表去重 L2-002 链表去重 [题目链接] 题意 思路 先用结构题存入所有节点,再用一个map去重,去重的,然后从头节点开始,往下找节点,遇到键值的绝对值相等的就将这个节点存入到另一个数组,最后注意节点都以-1结尾 代码 #include <bits/stdc++.h> using namespace std; struct put{ string idx;//当前节点的地址 int e;//值 string ne;//下一个点的地址 }; map<s 阅读详情

小练习记录贴04

点击跳转到原题


题目描述

给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。

输入格式

输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤ 1 0 5 10^5 105,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 −1 来表示。
随后 N 行,每行按以下格式描述一个结点:

地址 键值 下一个结点

其中地址是该结点的地址,键值是绝对值不超过 1 0 4 10^4 104的整数,下一个结点是下个结点的地址。

输出格式

首先输出去重后的链表,然后输出被删除的链表。每个结点占一行,按输入的格式输出。

输入样例

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

解题思路

map可以让两个数据类型产生关联,并且first当作索引,同时会自动排序(入股first是int或者string类型)。本题暂时用不到自动排序。pair应该也可以做到,但是目前我对pair的掌握程度不如map,所以这道题选择了使用map来做。
主要是创建了以下几个map:

  • key_value(int, int): 将地址和数值匹配
  • addrs(int, int):将地址和下一个地址匹配上
  • values(int, bool):标记当前数值绝对值是否出现过

两个vector(int)保存保留的链表节点和删除的链表节点。
保存好原始数据之后,从第一个地址遍历链表,出现重复的数值放入link2(删除的链表节点),反之,加入link2,并且将数值存入values当中。

因为给了数据范围,地址范围在 1 0 5 10^5 105,数值绝对值范围在 1 0 4 10^4 104,所以有的coder也直接用数组做,大致思路是一样的。(假如我提前意识到地址是五位==范围在五位数,我大概率也会这样选择,然而……)

另外需要注意的是,假如所有的节点都被保留下来,那么删除节点链表就不用输出了,而不是输出-1. 所以后面还要多加一个判断,不加的话第三个节点过不去。

数值不使用map或数组标记,而是循环查找会有两个节点超时。

AC代码

#include<iostream>
#include<vector>
#include<map>
#include<cmath>
using namespace std;


int main(){
    int begin, N; cin >> begin >> N;
    map<int, int> addrs;
    map<int, int> key_value;
    for(int i = 0; i < N; i ++){
    	int addr1, value, addr2;
    	cin >> addr1 >> value >> addr2;
    	addrs[addr1] = addr2;
    	key_value[addr1] = value;
	}
	map<int, bool> values;
	vector<int> link1, link2;
	int index = begin;
	while(index != -1){
		bool existValue = false;
		if(values[abs(key_value[index])] == true){
			existValue = true;
		}
		if(existValue){
			link2.push_back(index);
		}else{
			link1.push_back(index);
			//values.push_back(abs(key_value[index]));
			values[abs(key_value[index])] = true;
		}
		index = addrs[index];
	}
	for(int i = 0; i < link1.size(); i ++){
		if(i) printf(" %05d\n", link1[i]);
		printf("%05d %d",link1[i], key_value[link1[i]]);
		//cout << link1[i] << " " << key_value[link1[i]] << endl;
	}
	printf(" -1\n");
	if(link1.size() == N) return 0;
	for(int i = 0; i < link2.size(); i ++){
		if(i) printf(" %05d\n", link2[i]);
		printf("%05d %d",link2[i], key_value[link2[i]]);
	}
	printf(" -1\n");
    return 0;
}
ABAP on HANA/CDS view/AMDP 大乱炖 文章目录1. HANA的三大杀器1.1 内存式数据库1.2 多核架构1.3 列式存储1.3.1 数据压缩1.3.2 并行处理1.3.3 聚集和索引1.3.4 代码下移2. CDS 概念2.1 ABAP 开发环境2.2 OPEN SQL语句2.3 CDS 到底是啥2.4 CDS 类型2.5 创建CDS view3. CDS 实战3.1 Annotation注解3.2 Case 语句3.3 数学计算3.4 字符串表达3.5 货币转换3.6 聚集语句3.7 Join3.8 Union3.9 参数3.10 作为子C 阅读详情

相关推荐

下水管道损坏检测数据集总结

下水管道损坏检测数据集包含 6708 张图像,为下水管道损坏情况的检测提供了丰富的数据基础。该数据集提供了 YOLO 和 VOC 两种常见的标注方式,方便不同需求的使用者进行模型训练和研究。

crz1336768325的博客 870

Map和Set相关练习

刷题

z141042的博客 943

金蝶云星空核心数据表解析与高效关联查询指南

本文深入解析金蝶云星空核心数据表结构,提供高效关联查询的实战指南。文章详细介绍了基础资料、业务单据和财务模块的关键表及其关联逻辑,重点阐述了如何利用关联表(_LK表)进行跨单据溯源,并分享了编写高性能SQL的实用技巧与避坑建议,帮助开发者、实施顾问和数据分析师快速掌握数据查询方法,提升工作效率。

weixin_29254673的博客 527

团体程序设计天梯赛-练习集 L2-002 链表去重

这题考察对链表的运用,这里我通过模拟对重复的元素的节点,我就将重复的节点放入数组2,不重复的放在数组1,map记录该元素是否出现过。这里模拟即可,后面通过遍历数组1 数组2 修改当前的节点的下个地址为当前该节点所在数组的下一个节点。ac code + 注释。

2501_91263296的博客 243

ais信号接收设备_国内首款基于软件无线电技术的AIS基站投入测试使用

星网宇达子公司北京凯盾环宇科技有限公司经过多年的潜心研发,成功研制出国内首台基于软件无线电(SDR)的CATON 9011 AIS基站。该基站采用软件无线电技术,利用软件数字技术代替传统的模拟电路,大大的降低了模拟器件的使用率,提高了基站的可靠性和使用年限。CATON 9011 AIS基站研制依据ITU-R M.1371-5、IEC 62320-1、IEC 61162-1等国际标准,兼容...

weixin_29057163的博客 2334

thinkphp5.0.24反序列化漏洞分析

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

m0_67392182的博客 1871

Map、Set和哈希表的应用练习(数据结构系列15)

Map、Set和哈希表的练习快来康康!!!

weixin_61599986的博客 574

华为OD技术面八股_C++_05

汇总华为OD技术面C++方向技术面八股文,提供详细解答。

qq_45776114的博客 413

Map和Set

Map和Set详解

m0_68989458的博客 219

R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees)、使用plot函数可视化训练好的条件推理决策树、条件推理决策树的叶子节点的阴影区域表

R语言使用party包中的ctree函数构建条件推理决策树(Conditional inference trees)、使用plot函数可视化训练好的条件推理决策树、条件推理决策树的叶子节点的阴影区域表示的是阳性样本的比例

data+scenario+science+insight 1226

基于高斯两步移动搜寻法(2SFCA)的城市绿地可达性分析

第二步,对于每一个街道i,给定空间距离阈值d0,便形成另一个空间作用域,同样对于落在空间作用域内的每块绿地l的供给比率(Rl)利用高斯方程赋以权重,然后对这些加权后的供给比率(Rl)进行加和,便得到每个街道i的绿地可达性Ai。图3与图4是高斯两步移动搜索法的示例。在图3中,以d0为阈值,有1、2、3 三个街道中心点落在了绿地a的空间作用域内。同样在图4中,以d0为阈值,有a、c两个绿地中心点落在了街道2的空间作用域内,根据公式(3),对a、c高斯方程加权后的供需比率进行累加,便得到了街道2 的绿地可达性。

2301_77310370的博客 2405

刷题日记(标题必须为什么不少于5个字!)

为什么一定要填写摘要,不写行不行啊!

weixin_47834388的博客 207

企业级 Token 中转架构设计:高并发、多模型、费用监控一次搞定

摘要:本文针对企业级AI开发中的多模型接口混乱、高并发稳定性差及Token费用失控等痛点,提出一套2026年企业级Token中转架构解决方案。该方案采用五层分层设计(接入层、网关层、调度层、服务层、存储层),实现多模型统一接口、智能路由、高并发限流容错及精细化成本监控。核心功能包括:异构模型标准化接入、动态路由策略(场景/成本/负载/容灾)、多级限流熔断机制、全链路Token计费与安全防封体系(指纹清洗、IP池隔离)。通过分层解耦与模块化设计,企业可降低50%成本、提升99%稳定性,并避免封号风险。文章还提

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 149

【PTA】链表去重

题目重述 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。 输入格式: 输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤10​5,为结点...

阳光大男孩!!!的博客 3122

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

链表去重(强行用map水过)

L2-002. 链表去重 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个带整数键值的单链表L,本题要求你编写程序,删除那些键值的绝对值有重复的结点。即对任意键值K,只有键值或其绝对值等于K的第

芒果街上的小屋(此博客暂时停用) 1205

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

L2-002 链表去重 (25 分)(map queue)

【题解】 类似L2-022 重排链表 (25 分)(模拟+思维) 用map存储结点的顺序存储关系和地址所对应的值,vis用于判断是否出现重复的绝对值。用队列1,2分别记录保留和删去的结点地址,按顺序判断下来,若出现过则压入队列2,否则压入队列1。最后输出即可。 【代码】 #include <bits/stdc++.h> using namespace std; map &lt...

菜鸡成长史 788

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

PTA L2链表去重 (25分)

L2-002 链表去重 (25分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删...

Ven 1430

L2-002 链表去重-java

L2-002 链表去重 (25 分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。 输入格式: 输入在第一行给出 L 的第一个结点的地址和一个正...

qq_43115606的博客 919

Java实现数据去重的几种方案及其去重原理

之前就有写过实现根据对象的某个字段去重的一个方案,利用Java8的流,不过实际上使用的还是TreeSet。不过,当时对于这个去重原理没有过多深究,只是想着Set结构天生就是去重的,今天再次用到,稍微了解一下原理。

weixin_43975276的博客 2845

PTA 链表去重

给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。

AcleverPig的博客 1200

PTA 7-8 链表去重 (25 分)

PTA 7-8 链表去重 (25 分) #include <iostream> #include <iomanip> #include <cmath> #include <cstdio> #include <map> using namespace std; int main() { int a[100000][3],b[2],d...

weixin_44996854的博客 1896

PTA L2-002 链表去重

PTA链表去重

celia12345678的博客 307

set和map去重调用什么方法_【ES6】Set、Map

SetSet 是 ES6 提供给我们的构造函数,能够造出一种新的存储数据的结构特点:只有属性值没有属性名,成员值唯一用途:可以转成数组,其本身具备去重(自动去重),交集,并集,差集的作用等参数必须具备迭代接口,只要原型上存在Symbol(Symbol.iterator)属性就说明具备迭代接口,如:数组、字符串、arguments、NodeListSet.add()向 Set 对象中添加数据Set ...

weixin_39737947的博客 581

团体天梯 L2-002 链表去重 (25 分)

L2-002 链表去重 (25 分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。 输入格式: 输入在第一行给出 L 的第一个结点的地址和...

ItaLink 2225

L2-002. 链表去重

L2-002. 链表去重 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个带整数键值的单链表L,本题要求你编写程序,删除那些键值的绝对值有重复的结点。即对任意键值K,只有键值或其绝对值等于K的第

xunalove的博客 1054

L2-002 链表去重 (25 分)

给定一个带整数键值的链表L,你需要把其中绝对值重复的键值结点删掉。即对每个键值K,只有第一个绝对值等于K的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定L为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。 输入格式: 输入在第一行给出 L 的第一个结点的地址和一个正整数N(≤,为结点总数)。一个结...

weixin_30394333的博客 90
上一篇: dijkstra练习-紧急救援
下一篇: 贪心练习-月饼
Ayu阿予
博客等级 码龄5年 456粉丝 47原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ayu阿予

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值