You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

复制链表

复制链表主要有三种解决方法:使用哈希表、拆分链表、使用递归。

  1. 使用哈希表:
class Node:
    def __init__(self, val=None, next=None, random=None):
        self.val = val
        self.next = next
        self.random = random

def copyLinkedList(head):
    if not head:
        return None

    node_dict = {}
    curr = head
    # 第一次遍历,复制节点值,并建立原节点与新节点的映射关系
    while curr:
        node_dict[curr] = Node(curr.val)
        curr = curr.next

    curr = head
    # 第二次遍历,设置新节点的next和random指针
    while curr:
        node_dict[curr].next = node_dict.get(curr.next)
        node_dict[curr].random = node_dict.get(curr.random)
        curr = curr.next

    return node_dict[head]
  1. 拆分链表:
class Node:
    def __init__(self, val=None, next=None, random=None):
        self.val = val
        self.next = next
        self.random = random

def copyLinkedList(head):
    if not head:
        return None

    curr = head
    # 第一次遍历,将新节点插入到原节点后面
    while curr:
        new_node = Node(curr.val)
        new_node.next = curr.next
        curr.next = new_node
        curr = new_node.next

    curr = head
    # 第二次遍历,设置新节点的random指针
    while curr:
        curr.next.random = curr.random.next if curr.random else None
        curr = curr.next.next

    # 第三次遍历,拆分新节点和原节点
    curr = head
    new_head = head.next
    while curr.next:
        tmp = curr.next
        curr.next = curr.next.next
        curr = tmp

    return new_head
  1. 使用递归:
class Node:
    def __init__(self, val=None, next=None, random=None):
        self.val = val
        self.next = next
        self.random = random

def copyLinkedList(head):
    if not head:
        return None

    if hasattr(head, 'visited'): # 已经复制过的节点直接返回
        return head.visited

    new_node = Node(head.val)
    head.visited = new_node

    new_node.next = copyLinkedList(head.next)
    new_node.random = copyLinkedList(head.random)

    return new_node
本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

万字长文带你漫游数据结构世界|社区征文

tail; private int size; public MyList() { this.head = null; this.tail = null; this.size = 0; } public void add(T element) { add(size, element); } public void add(int index, T element) { if (index < 0 || index > size) { throw new IndexOutOfBoundsException("超出链表长度范围"); } ListNode current = new Li...

硬核干货!一文掌握 binlog 、redo log、undo log|社区征文

binlog 的主要应用场景分别是 **主从复制** 和 **数据恢复**。1. **主从复制** :在 Master 端开启 binlog ,然后将 binlog 发送到各个 Slave 端, Slave 端重放 binlog 来达到主从数据一致。1. **数据恢复** :... 修改数据的内存拷贝,产生脏数据1. 生成一条重做日志并写入 redo log buffer,记录的是数据被修改后的值1. 默认在事务提交后将 redo log buffer 中的内容刷新到 redo log file,对 redo log file 采用追加写的方式...

技术资讯:VSCode大更新,这两个. 功能终于有了

再手动复制文件到相应目录中。但在最新版本中,增加了一个实用的新功能:可直接从操作系统的资源管理器中,粘贴文件到VSCode的目录里。这意味着,用户现在可以更方便的,从他们的电脑文件系统中复制需要的静态资源文件,并直接粘贴到VSCode的项目目录中,而不需要再去做打开文件资源管理器这种浪费时间的操作。### ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/24fe9764408e418c8e729674e78...

内容集锦 | 数据技术这么干(第八弹)!

带来可复制的营销增长经验,观看直播还可领取免费BI视频课程以及充电宝等精美礼品~ **扫码立即报名👇**![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/9705d2774e044a6895210e063db76343~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1716222056&x-signature=wcn%2FY49%2Bz7L76MVDnS4FjR5X%2Fd8%3D) ![picture.image](https://p3-volc-community-sign.byt...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

复制链表-优选内容

万字长文带你漫游数据结构世界|社区征文
tail; private int size; public MyList() { this.head = null; this.tail = null; this.size = 0; } public void add(T element) { add(size, element); } public void add(int index, T element) { if (index < 0 || index > size) { throw new IndexOutOfBoundsException("超出链表长度范围"); } ListNode current = new Li...
硬核干货!一文掌握 binlog 、redo log、undo log|社区征文
binlog 的主要应用场景分别是 **主从复制** 和 **数据恢复**。1. **主从复制** :在 Master 端开启 binlog ,然后将 binlog 发送到各个 Slave 端, Slave 端重放 binlog 来达到主从数据一致。1. **数据恢复** :... 修改数据的内存拷贝,产生脏数据1. 生成一条重做日志并写入 redo log buffer,记录的是数据被修改后的值1. 默认在事务提交后将 redo log buffer 中的内容刷新到 redo log file,对 redo log file 采用追加写的方式...
技术资讯:VSCode大更新,这两个. 功能终于有了
再手动复制文件到相应目录中。但在最新版本中,增加了一个实用的新功能:可直接从操作系统的资源管理器中,粘贴文件到VSCode的目录里。这意味着,用户现在可以更方便的,从他们的电脑文件系统中复制需要的静态资源文件,并直接粘贴到VSCode的项目目录中,而不需要再去做打开文件资源管理器这种浪费时间的操作。### ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/24fe9764408e418c8e729674e78...
干货 | 嵌入式数据分析最佳实践
之后可以鼠标右键复制,或者键盘crtl+V即可* **仪表盘**+ 进入到仪表盘预览状态+ 点击需嵌入图表右侧,选择「嵌出仪表盘」![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/607a2ecfba4548bfb9a5e9a0a97746fd~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1716135653&x-signature=3lUgYpztnPasXmR5YmVuL8yngSc%3D)+ 显示「复制成功」,之后可以鼠标右键复制,或者键盘crtl+V即...

复制链表-相关内容

字节跳动 EB 级 Iceberg 数据湖的机器学习应用与优化

当需要添加列或加特征时使用写时复制(Copy-On-Write)的方式会导致存储量翻倍,大幅增加成本负担的同时也会因为读写放大的本质导致不必要的计算资源开销。其次是通过**传统数据库方案**存放样本,这种方案更多适用于处理少量样本的场景,当海量数据达到 PB、EB 级时会遇到困难。此外由于训练代码无法直接读取数据库底层文件,读取吞吐量可能受限制,即使在实时拼接特征、标签的应用场景也会导致训练吞吐速度的下降。 ## **数据...

集简云 x 建筑业,帮助企业实现畅捷通T+Cloud多账套数据自动同步,提高人效200%

手动复制粘贴,账套之间的数据同步无法自动化处理。 * 同步数据重复性强且耗费大量时间。每次业务人员在子公司创建账套时需要录入多个字段,比如单据id,编码,类型,客户信息等等,然后切换总公司账号创建采购单仍需要再次录入多个字段,整个操作重复性强且时间成本高,对于企业来说,实属是一笔不划算的买卖。 * 人工操作出错率高且影响工作进度。由于账套的复杂性高以及多个账目之间的数据联动性强,人工操...

集简云本周自动化流程模板推荐

网站管理者正常需要手动将Wordpress新文章粘贴复制到语雀进行编辑记录到文档中,使用集简云后当Wordpress当有新文章创建时会自动同步相关数据到语雀并创建文档。 **适用人群:**运营、网站编辑**推荐指数:**⭐⭐⭐⭐⭐ **模板3:逸创·云客服有新工单时QQ邮箱自动发送邮件提醒** ****集成应用:****[逸创·云客服+QQ邮箱](https://www.jijyun...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

无恒实验室联合GORM推出安全好用的ORM框架-GEN

省去繁琐复制#### 🔗 代码一键生成,专注业务逻辑#### 🐞 字段类型安全,执行SQL也安全#### 😉 查询优雅返回,完美兼容GORMGEN提供了自动同步数据表结构体到GORM模型,使用非常简单,即使数据库字段信息改变,可以一键同步,数据库查询相关代码可以一键生成,CRUD只需要调用对应的方法,开发体验飞起。GEN采用了类型安全限制,所有参数都做了安全限制,完全不用担心存在注入;最重要的是自定义SQL只需要通过模板注释到interface的方法...

分布式数据库在抖音春晚活动中的应用

通过主从做复制,又或者可以分库分表等等。那样的话,我们又绕回到第一个问题 ,要使用中间件支持,会遇到一些限制。第三点是传统单机数据库在部署和使用上可能会存在 **跨机房** 的问题,我们可能要在 RPO 和性能之... 远端存储池自然会根据 Segment 组织起来一个多 Page 多版本的 log 链表,每个 Page 只要向前消费这些针对自身修改的 redo log,就能不断产生新的版本,然后去服务不同版本需求的 Page Read。这就是从 log 到 Page 的全...

云原生中间件 MongoDB 的集群架构与设计 |社区征文

## 一、前言MongoDB 有三种集群架构模式,分别为**主从复制**(Master-Slaver)、**副本集**(Replica Set)和**分片**(Sharding)模式。 - Master-Slaver 是一种主从复制的模式,目前已经不推荐使用。 - Replica Set 模式取代了 Master-Slaver 模式,是一种互为主从的关系。Replica Set 将数据复制多份保存,不同服务器保存同一份数据,在出现故障时自动切换,实现故障转移,在实际生产中非常实用。 - Sharding 模式适合处理大量数据,...

边缘智变:深度学习引领下的新一代计算范式|社区征文

python复制代码```3. 数据分析在边缘服务器层,使用数据分析算法对处理后的数据进行深入分析,提取有用的特征和信息。```import numpy as np from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier # 分割数据集为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(processed_data.drop('diagnosis', axis=1), processed_data['diagnos...

ChatGPT模型训练,帮助你的业务系统实现AI进化

可以快速复制内容粘贴到浏览器插件,ChatGPT会按照训练模型自动生成文章改写的文案,并保存到明道云表单中。[![picture.image](https://p6-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/a2346b24408b4eb48dacacd6ed4be4ec~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1716135617&x-signature=ZNsHdyAanImmSdyz%2BKMixs2Xd2E%3D)](https://www.jijyun.cn/apps/processes/2436)[点击图片或文字,使用流程...

干货 | ByteHouse:基于ClickHouse 的实时计算能力升级

并且达到可复制化。(在字节跳动内部,总共18000 个节点,只有不到 10 个运维人员的支持。通过ByteHouse这些工具,能够做到自动化、高效化、可复制化) **第二方面是稳定性优化。**在长达6年多的ByteHouse集群运营当中,研发团队发现ClickHouse存在大量的稳定性痛点。而ByteHouse优化到了代码根本层面的修复,包括云数据的持久化,包括主备同步查询,包括慢节点模式, Zookeeper的自动的清理和修复等等。 当这些问...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询