博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 138——复制带随机指针的链表
阅读量:5738 次
发布时间:2019-06-18

本文共 1401 字,大约阅读时间需要 4 分钟。

1. 题目

2. 解答

第一次遍历链表的时候,复制旧链表的节点值建立一个新的链表,同时定义一个 unordered_map 作为哈希表,哈希表的键为旧链表的节点指针,值为新链表的节点指针。

然后,第二次遍历链表,访问旧链表节点的随机指针,然后以此为键从 map 中取出对应的新链表节点指针,这也就是当前新链表节点的随机指针。

/** * Definition for singly-linked list with a random pointer. * struct RandomListNode { *     int label; *     RandomListNode *next, *random; *     RandomListNode(int x) : label(x), next(NULL), random(NULL) {} * }; */class Solution {public:    RandomListNode *copyRandomList(RandomListNode *head) {                unordered_map
nodemap; RandomListNode *temp = head; RandomListNode *new_head = new RandomListNode(0); //哨兵节点,方便操作 RandomListNode *copy_temp = new_head; // 建立新链表 while (temp) { copy_temp->next = new RandomListNode(temp->label); nodemap[temp] = copy_temp->next; temp = temp->next; copy_temp = copy_temp->next; } RandomListNode *random_temp = NULL; temp = head; copy_temp = new_head->next; // 填充新链表的随机指针 while (temp) { random_temp = temp->random; if (random_temp != NULL) copy_temp->random = nodemap[random_temp]; else copy_temp->random = NULL; temp = temp->next; copy_temp = copy_temp->next; } return new_head->next; }};

获取更多精彩,请关注「seniusen」!

转载地址:http://fafzx.baihongyu.com/

你可能感兴趣的文章
Ajax:读取响应首部
查看>>
I.MX6 简单电路模拟USB设备的插入
查看>>
(2010-8-31) awk内存泄漏以及缓慢的正则表达式计算速度
查看>>
基于PHPUnit编写测试用例
查看>>
iOS UINavigationBar-导航栏、UINavigationItem-导航项
查看>>
51nod 1284:2 3 5 7的倍数 容斥原理
查看>>
设计mooon调度器遇到的难题
查看>>
学JAVA争做IT精英
查看>>
ipad应用打包
查看>>
Apache和Nignx基于三种方式搭建web站点并设置用户访问控制达到优化整个站点性能...
查看>>
Android 手机应用开发经验之手势识别Gesture的
查看>>
Longest Palindromic Substring
查看>>
ibooks 3d 翻转效果 flip 3d
查看>>
URAL 1992 CVS 可持久化链栈
查看>>
eclipse 列编辑
查看>>
文件方式实现完整的英文词频统计实例
查看>>
Oracle活动会话历史(ASH)及报告解读
查看>>
Project Euler Problem 7: 10001st prime
查看>>
HDU1113 POJ1318 UVA642 ZOJ1181 UVALive5328 Word Amalgamation【MAP+排序】
查看>>
python制作验证码
查看>>