博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
复杂链表的复制
阅读量:4212 次
发布时间:2019-05-26

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

题目描述

输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的 head。

public class RandomListNode {    int label;    RandomListNode next = null;    RandomListNode random = null;    RandomListNode(int label) {        this.label = label;    }}

 

解题思路

第一步,在每个节点的后面插入复制的节点。

 

第二步,对复制节点的 random 链接进行赋值。

 

第三步,拆分。

 

public RandomListNode Clone(RandomListNode pHead) {    if (pHead == null)        return null;    // 插入新节点    RandomListNode cur = pHead;    while (cur != null) {        RandomListNode clone = new RandomListNode(cur.label);        clone.next = cur.next;        cur.next = clone;        cur = clone.next;    }    // 建立 random 链接    cur = pHead;    while (cur != null) {        RandomListNode clone = cur.next;        if (cur.random != null)            clone.random = cur.random.next;        cur = clone.next;    }    // 拆分    cur = pHead;    RandomListNode pCloneHead = pHead.next;    while (cur.next != null) {        RandomListNode next = cur.next;        cur.next = next.next;        cur = next;    }    return pCloneHead;}

 

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

你可能感兴趣的文章
TopK问题
查看>>
Hive调优
查看>>
HQL排查数据倾斜
查看>>
DAG以及任务调度
查看>>
LeetCode——DFS
查看>>
MapReduce Task数目划分
查看>>
ZooKeeper分布式锁
查看>>
3126 Prime Path
查看>>
app自动化测试---ADBInterface驱动安装失败问题:
查看>>
RobotFramework+Eclipse安装步骤
查看>>
测试的分类
查看>>
photoshop cc2019快捷键
查看>>
pycharm2019版本去掉下划线的方法
查看>>
SQL中EXISTS的用法
查看>>
10丨案例:在JMeter中如何设置参数化数据?
查看>>
11丨性能脚本:用案例和图示帮你理解HTTP协议
查看>>
12丨性能场景:做参数化之前,我们需要考虑什么?
查看>>
九度OJ 1091:棋盘游戏 (DP、BFS、DFS、剪枝)
查看>>
九度OJ 1092:Fibonacci (递归)
查看>>
九度OJ 1093:WERTYU (翻译)
查看>>