前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >牛客网 复杂链表的复制

牛客网 复杂链表的复制

作者头像
发布2018-09-04 11:35:10
7200
发布2018-09-04 11:35:10
举报

题目:

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

解答:

思路参考:《苦练算法》-剑指Offer- 二十五、复杂链表的复制 -python编写

先复制原来链表

复制相互之间的random关系

将两个链表拆分

# -*- coding:utf-8 -*-
# class RandomListNode:
#     def __init__(self, x):
#         self.label = x
#         self.next = None
#         self.random = None
class Solution:
    # 返回 RandomListNode
    def Clone(self, pHead):
        # write code here
        if not pHead:
            return pHead
        cloneNode=pHead
        # 复制链表
        while cloneNode:
            node=RandomListNode(cloneNode.label)
            node.next=cloneNode.next
            cloneNode.next=node
            cloneNode=node.next
        cloneNode=pHead
        # 复制相互之间的random指向
        while cloneNode:
            if cloneNode.random:
                cloneNode.next.random=cloneNode.random.next
            cloneNode=cloneNode.next.next
        cloneNode=pHead
        pHead=pHead.next
        # 将两个列表拆分
        while cloneNode.next:
            node=cloneNode.next
            cloneNode.next=node.next
            cloneNode=node
        return pHead
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年08月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目:
  • 解答:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档