题目:

  • 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)
  • 返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)

代码:

class RandomListNode:def __init__(self, x):self.label = xself.next = Noneself.random = None
class Solution:# 返回 RandomListNodedef Clone(self, pHead):# write code hereif pHead == None:     # 判断是否为空return None# 复制一个一样的node,并且添加到之前的链表的每一个node的后面pTmp = pHeadwhile pTmp:node = RandomListNode(pTmp.label)node.next = pTmp.nextpTmp.next = nodepTmp = node.next# 实现新建的node的random的指向pTmp = pHeadwhile pTmp:if pTmp.random:pTmp.next.random = pTmp.random.nextpTmp = pTmp.next.next # 断开原来的node和当前新的node之间的连接pTmp = pHeadnewHead = pHead.nextpNewTmp = pHead.nextwhile pTmp:pTmp.next = pTmp.next.nextif pNewTmp.next:pNewTmp.next = pNewTmp.next.nextpNewTmp = pNewTmp.nextpTmp = pTmp.nextreturn newHead
if __name__ =="__main__":
# 验证n1 = RandomListNode(1)n2 = RandomListNode(2)n3 = RandomListNode(3)n4 = RandomListNode(4)n5 = RandomListNode(5)n1.next = n2n2.next = n3n3.next = n4n4.next = n5s = Solution()newHead = s.Clone(n1)tmp = newHeadwhile tmp:print(tmp.label)tmp = tmp.next
输出:
1
2
3
4
5

剑指_复杂链表的复制(Python)相关推荐

  1. 牛客网-剑指Offer-复杂链表的复制

    题目链接:https://www.nowcoder.com/practice/f836b2c43afc4b35ad6adc41ec941dba?tpId=13&tqId=11178&r ...

  2. 剑指offer35.复杂链表的复制

    为什么不可以直接将每个节点复制下来? class Solution {public:Node* copyRandomList(Node* head) {if(head == nullptr) retu ...

  3. 【每日一题】剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点

  4. 【LeetCode】剑指 Offer 22. 链表中倒数第k个节点

    [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 文章目录 [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 一.遍历 二.双指针 总结 一.遍历 先遍历统计链表长 ...

  5. 剑指offer -- 反转链表

    先摆明重要性 剑指offer -- 反转链表  校招原题 解法一:迭代 翻转 即 将所有节点的next指针指向前驱节点. 由于是单链表,我们在迭代时不能直接找到前驱节点,所以我们需要一个额外的指针保存 ...

  6. 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)

    19. 删除链表的倒数第 N 个结点(java) 一.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3 ...

  7. 剑指offer 矩阵中的路径 @python

    剑指offer 矩阵中的路径 @python 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向 ...

  8. 《剑指offer》面试题的Python实现

    所属网站分类: 面试经典 > python 作者:gg 链接: http://www.pythonheidong.com/blog/article/464/ 来源:python黑洞网 www.p ...

  9. 剑指offer66题思路解析与python代码

    旋转数组的最小数字 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5 ...

  10. 剑指Offer #14 链表中倒数第k个结点(快慢指针) | 图文详解

    题目来源:牛客网-剑指Offer专题 题目地址:链表中倒数第k个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点. 节点结构如下: public class ListNode {int val ...

最新文章

  1. 移动端触屏click点击事件延迟问题,以及tap的解决方案
  2. 线性布局 相对布局 参数
  3. FLEX 运行 空白
  4. Android程序员的进阶之路
  5. 面试官问:能否模拟实现JS的new操作符(高频考点)
  6. CPU-内存-IO-网络调优
  7. Spark 机器学习中的线性代数库
  8. python plt.plot bar 设置绘图尺寸大小
  9. 神经网络的激活函数、并通过python实现激活函数
  10. java的remove iterator_Java集合 iterator.remove()方法详解
  11. 阻止跳转的四种方式,你知道吗?
  12. ETF:一种让美国“80后”趋之若鹜的投资工具
  13. ros系统能用c语言编程,ROS操作系统学习(十一)参数的使用与编程方法
  14. librosa 语音库(二)STFT 的实现
  15. 《人工智能导论》自然演绎推理
  16. 企业流程再造(BPR)
  17. 解决Google Drive 大文件下载过程中中途失败问题
  18. python nonetype_理解Python中的NoneType对象
  19. 90%的人都被这样“坑”过?淘宝京东的双十一价是真的吗?
  20. AnchoredSnapper函数使用说明

热门文章

  1. Julia : 关于类型的匹配和规范建议
  2. 常用数据库的字段类型及大小
  3. SQLite 时间格式化
  4. 阿里云原生“因云而生”心智大图重磅发布
  5. 【优化分类】基于matlab遗传算法优化支持向量机分类(多输入多分类)【含Matlab源码 QF003期】
  6. ai智能和大数据测试_测试版可帮助您根据自己的条件创建数据和AI平台
  7. uber大数据_Uber创建了深度神经网络以为其他深度神经网络生成训练数据
  8. PyTorch源码解读之torch.utils.data.DataLoader
  9. 动态规划: 投资分配问题
  10. mysql5.6二进制包_MySQL 5.6版本二进制包多实例安装