Copy List with Random Pointer
来源:互联网 发布:苹果电脑流程图软件 编辑:程序博客网 时间:2024/05/16 18:49
题: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.
题意:copy一个链表(深拷贝),链表包含一个next指针和一个random指针,其中random指针指向字符串中的某个节点或者为空。
分析:
第一步: 在原链表的每个节点后面,复制一个新的节点(就是把每个节点复制两份),原链表长度变为 2 倍,random 指针指向的是 原链表节点 random 指针指向的节点的后面的那个节点
第二步: 将链表拆成两个 lists
实现:
节点结构:
class RandomNode {
int sign;
RandomNode next, random;
RandomNode(int x) { this.sign= x; }
}
算法代码:
public class leetcode {class RandomNode { int sign; RandomNode next, random; RandomNode(int x) { this.sign = x; }}; public RandomNode copyList(RandomNode head) { if (head == null) return null; RandomNode oldnode = head; while (oldnode != null) { RandomNode newnode = new RandomNode(oldnode.sign); newnode.next = oldnode.next; oldnode.next = newnode; oldnode = newnode.next; } oldnode = head; while (oldnode != null) { if (oldnode.random != null) oldnode.next.random = oldnode.random.next; oldnode = oldnode.next.next; } RandomNode newhead = head.next; oldnode = head; while (oldnode != null) { RandomNode newnode = oldnode.next; oldnode.next = newnode.next; if (newnode.next != null) newnode.next = newnode.next.next; oldnode = oldnode.next; } return newhead; }}
0 0
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Copy List with Random Pointer
- Ubuntu
- Android自定义attr的各种坑
- js实现网页图片轮换播放
- MVVM编码指引
- Tomcat启动分析(我们为什么要配置CATALINA_HOME环境变量)
- Copy List with Random Pointer
- 飛飛(三十一)指向学生的指针
- LeetCode 29. Divide Two Integers
- 集成C#测试框架和Selenium对于Web系统实现自动化测试
- POJ 1979:Red and Black(dfs)
- 设计模式之享元模式
- 面试题小结二
- hdu 5678 ztr loves trees (给一颗有根树,树上的每一个节点有一个权值,每次询问某个子树中所有权值的中位数)
- debian下载、编译、使用Cimg的Demo