1097 Deduplication on a Linked List
1. 开始测试点4不通过,检查后发现是犯了低级错误,把表示绝对值有无出现的整型数组的大小设置为了4000(题目中说绝对值不会超过10的4次方),所以最小也该是10001。
2. 我认为和其他链表题相比,本题是不需要给结点加特殊属性用来排序的,因为可以直接在过程中记录主链和副链的数目,然后按照顺序存入静态链表(实际上就是数组)。
3. 整体思路是,对于每一个读入的结点,要是绝对值没出现过就放进主链link1,一开始只要读入add和key就好了,next是在全部读入以后用下一个数组元素的add填充,绝对这出现过的就放进副链link2。其实对主链和副链的处理是完全一样的。
AC代码
#include<cstdio>
#include<map>
#include<set>
#include<string>
#include<cstring>
#include<iostream>
#include<vector>
#include<stack>
#include<queue>
#include<algorithm>using namespace std;const int maxn = 100010;struct Node{int add,key,next;
}node[maxn],link1[maxn],link2[maxn];int pi[10001] = {0};//记录某个整数有没有出现过 int main(){int n,begin;scanf("%d %d",&begin,&n);int add;while(n--){scanf("%d",&add);scanf("%d %d",&node[add].key,&node[add].next);node[add].add = add;}int cnt1 = 0,cnt2 = 0;//分别代表链1和链2上结点的数量int L = begin;while(L!=-1){if(!pi[abs(node[L].key)]){pi[abs(node[L].key)] = 1;//表示那个值对应的绝对值出现过了 link1[cnt1].key = node[L].key;link1[cnt1].add = node[L].add;cnt1 ++;L = node[L].next;}else{link2[cnt2].key = node[L].key;link2[cnt2].add = node[L].add;cnt2 ++;L = node[L].next;}} //给主链的节点的next赋值 for(int i=0;i<cnt1-1;i++){link1[i].next = link1[i+1].add;}link1[cnt1-1].next = -1;//给副链的结点的next赋值 for(int i=0;i<cnt2-1;i++){link2[i].next = link2[i+1].add;}link2[cnt2-1].next = -1;for(int i=0;i<cnt1;i++){printf("%05d %d ",link1[i].add,link1[i].key);if(link1[i].next!=-1)printf("%05d\n",link1[i].next);else printf("-1\n");} for(int i=0;i<cnt2;i++){printf("%05d %d ",link2[i].add,link2[i].key);if(link2[i].next!=-1)printf("%05d\n",link2[i].next);else printf("-1\n");}return 0;
}
1097 Deduplication on a Linked List相关推荐
- PAT甲级1097 Deduplication on a Linked List:[C++题解]遍历链表、两个vector
文章目录 题目分析 题目链接 题目分析 题意:删掉链表中数值绝对值相同的结点,将其放入另一个链表中.最后输出去重后的链表和删掉元素构成的链表. 分析:采用数组模拟链表,把链表存下来.然后遍历链表,该元 ...
- 1097 Deduplication on a Linked List (25 分)_35行代码AC
立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Given a singly linked list L with integer keys, you are supposed ...
- PTA甲级 1097 Deduplication on a Linked List (25分)-链表处理
文章目录 题目原文 Input Specification: Output Specification: Sample Input: Sample Output: 生词如下: 题目大意: 思路如下: ...
- 【PAT甲级题解】1097 Deduplication on a Linked List (25分)
Deduplication意为重复数据消除,Deplicated意为复制,是deduplication的过去式,题干大意为给定一个单链表L要求你对每一个结点的值判断,如果这个值的绝对值是第一次出现,那 ...
- 【PAT甲级 链表去重】1097 Deduplication on a Linked List (25 分) C++ 全部AC
题目 思路: 先把题目中的链表读进内存 创建两个新链表listA, listB 遍历原链表,把重复的放进listB,不重复的放进listA.放的时候,注意处理一下后继next中存的值. 分别打印两个分 ...
- PAT1097:Deduplication on a Linked List
1097. Deduplication on a Linked List (25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 ...
- A1097 Deduplication on a Linked List
静态链表实现 取巧+思路清晰 但是时间复杂度比较高 可以优化insert Given a singly linked list L with integer keys, you are suppose ...
- PAT甲级题目翻译+答案 AcWing(链表)
1032 Sharing (25 分) 题意 : suffix后缀:prefix前缀 每个结点存一个字母,一共存两个单词 分别给两个单词的第一个字母的地址以及总共的结点数 给出所有结点的地址数值和下一 ...
- 【最新合集】PAT甲级最优题解(题解+解析+代码)
以下每道题均是笔者多方对比后, 思考整理得到的最优代码,欢迎交流! 共同成长哇.可以和博主比拼一下谁刷的更快~ 欢迎收藏.欢迎来玩儿 PAT题解目录 题号 标题 题解 分类 使用算法 1001 A+B ...
最新文章
- Pycharm 基本快捷键
- POSIX消息队列信号通知
- axios get 某个参数是数组怎么传_Vue 中 Axios 的封装和 API 接口的管理
- spring事物配置,声明式事务管理和基于@Transactional注解的使用
- html解析器编译原理,编译原理实验报告词法分析器(内含源代码).docx
- 六、爬虫中重要的解析库xpath和BeautifulSoup
- 【软件构造】(转) 设计模式
- C#使用StreamReader类读取文件文件
- TCP/IP 和 TCP/IP的 三/四次握手
- python好用的模块_python常用的内置模块和常用的第三方模块
- C语言内存动态分配与释放
- 代码行云流水..这位刚高中毕业的 UP 主,告诉我人的学习能力没有上限
- Selenium Grid跨浏览器-兼容性测试
- 掘金小册前端性能优化原理与实践读后总结
- 计算机网络原理大题汇总
- java对象复制_Java对象的复制三种方式
- 蚂蚁金服是不是中国最好的 FinTech(金融科技)公司
- 关关于android 微信sdk 分享 图片 到 朋友圈 的问题
- Conflux 请你“出名”啦!
- 用Matlab作出汽车驱动力图