复杂链表的复制
来源:互联网 发布:linux 如何查看用户数 编辑:程序博客网 时间:2024/06/01 10:49
题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
public class RandomListNode { int label; RandomListNode next = null; RandomListNode random = null; RandomListNode(int label) { this.label = label; }}
思路一:
1、复制每个节点,如:复制节点A得到A1,将A1插入节点A后面
2、遍历链表,A1->random = A->random->next;
3、将链表拆分成原链表和复制后的链表
public class Solution { public RandomListNode Clone(RandomListNode pHead) { if (pHead == null) return null; RandomListNode currentNode = pHead; while (currentNode != null) { RandomListNode temp = new RandomListNode(currentNode.label); temp.next = currentNode.next; currentNode.next = temp; currentNode = temp.next; } currentNode = pHead; while (currentNode != null) { RandomListNode node = currentNode.next; if (currentNode.random != null) node.random = currentNode.random.next; currentNode = node.next; } RandomListNode cloneListNode = pHead.next; currentNode = pHead; while (currentNode.next != null) { RandomListNode temp; temp = currentNode.next; currentNode.next = temp.next; currentNode = temp; } return cloneListNode; }}
思路二:递归
public class Solution { public RandomListNode Clone(RandomListNode pHead) { if (pHead == null) return null; RandomListNode newNode = new RandomListNode(pHead.label); newNode.random = pHead.random; newNode.next = Clone(pHead.next); return newNode; }}
阅读全文
0 0
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 复制复杂的链表
- 复杂链表的复制
- 复杂链表的复制
- 复杂链表的复制
- 使用mina时遇到“您的主机中的软件放弃了一个已建立的连接”问题解决
- Xshell 5中安装mysql的方法
- 初学图论小结
- RSA加密算法的java实现
- java设计模式总结十:享元模式
- 复杂链表的复制
- Git 简单使用学习
- laravel学习笔记之Eloquent ORM
- 正则匹配小知识
- Google 和 Levi's 合作的智能夹克终于要开卖了
- LeetCode 86. Partition List 链表的划分 Python Solution
- spring初始化异常ClassVisitor as super class
- C#操作Excel(三)相关函数
- django中过滤器 | 的运用