Copy List with Random Pointer
2015-10-13 22:01
489 查看
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.
解决思路首先想到的还是把链表当做有向图来深度遍历,
但是要特别注意的地方是他可能会有自环
Return a deep copy of the list.
解决思路首先想到的还是把链表当做有向图来深度遍历,
但是要特别注意的地方是他可能会有自环
public RandomListNode dfs(RandomListNode node, Map<Integer, RandomListNode> vis) { if (node != null && vis.get(node.label) == null) { RandomListNode cloneNode = new RandomListNode(node.label); vis.put(node.label, cloneNode); cloneNode.next = dfs(node.next, vis); if (node.random == node) {//有自环不要再往下搜索了,会死循环的! cloneNode.random = new RandomListNode(node.random.label); } else { cloneNode.random = dfs(node.random, vis); } return cloneNode; } else if (node == null) { return node; } else { //deal if the graph has a circle return vis.get(node.label); } } public RandomListNode copyRandomList(RandomListNode head) { if (head == null) return null; Map<Integer, RandomListNode> map = new HashMap<Integer, RandomListNode>(); return dfs(head, map); }
相关文章推荐
- Linux Kernel 系列2:用户空间的初始化
- 分享一个查看android各个版本代码的网站
- 每天一个linux命令(13):less命令
- Linux Shell脚本面试25问集合
- Servlet基础及Tomcat环境变量配置
- hadoop2.6整合hbase 1.1.2完全分布式安装
- shell自学笔记2
- LevelDB 整体架构
- 微软官方网站提供 MASM 8.0软件包(x86)下载,有简体中文版
- 创建带Apache服务的Centos Docker镜像
- SAS里面的optmodel过程
- 优化Web网站性能
- Yslow-23条规则(优化Web网站性能)
- DaoCloud 如何获取树莓派
- Linux多线程基础学习(三)线程生命周期
- Linux MATLAB并行打不开问题的处理
- CentOS下编译安装Apache2(新)
- Linux下逻辑地址-线性地址-物理地址图解
- Linux的账号与群组
- linux