[Linked List]Copy List with Random Pointer
2015-12-13 10:26
351 查看
Total Accepted: 53943 Total Submissions: 209664 Difficulty: Hard
A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.
Return a deep copy of the list.
(M) Clone Graph
o(n)空间复杂度,代码比价简单。网上还流传一种o(1)空间复杂度的解法,大致的过程就是先拷贝next结点,再连接随机结点,最后分离链表。
Next challenges: (M) Clone Graph
A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.
Return a deep copy of the list.
(M) Clone Graph
o(n)空间复杂度,代码比价简单。网上还流传一种o(1)空间复杂度的解法,大致的过程就是先拷贝next结点,再连接随机结点,最后分离链表。
/** * 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<RandomListNode*,RandomListNode*> umap; RandomListNode* newHead = NULL; RandomListNode* cur = head; RandomListNode* node_pre = NULL; RandomListNode* node = NULL; while(cur){ node = new RandomListNode(cur->label); umap[cur] = node; cur == head ? newHead = node :node_pre->next = node; node_pre = node; cur = cur->next; } cur = head; while(cur){ umap[cur]->random = cur->random ? umap[cur->random] : NULL; cur = cur->next; } return newHead; } };
Next challenges: (M) Clone Graph
相关文章推荐
- Linux 用户管理命令
- 三个数混合运算和三层架构
- 为什么 Linux Mint 比 Ubuntu好?
- Linux用户管理
- sqoop2 去除单引号与自定义分隔符
- Linux学习笔记(二十四、VI编辑器概述)
- apache ftpserver的使用(包含ftplet)
- Web基础架构:负载均衡和LVS
- 为什么 properties.load()方法不支持reader?
- Ubuntu 组态 Tomcat而每天的错误解决
- 网站框架选择
- 武汉大学2013linux大作业
- Linux 常用快捷键
- intro to Apache Log4j 2
- linux下安装Mysql
- 基于rails的schedule网站开发(10):Rails 环境
- linux的“自动化”
- Ubuntu12.04下kermit的安装与使用(VMware+USB转串口),以及openssl-1.0.0e的安装
- centos7与window10与window7三系统启动修改grup.cfg的方法
- OpenGL ES 学习教程(七) 亮瞎狗眼的 Specular Lighting 镜面高光