首页 > 编程语言 >python-leetcode-随机链表的复制

python-leetcode-随机链表的复制

时间:2025-01-23 12:28:48浏览次数:3  
标签:node head cur python random next 链表 new leetcode

138. 随机链表的复制 - 力扣(LeetCode)

"""
# Definition for a Node.
class Node:
    def __init__(self, x: int, next: 'Node' = None, random: 'Node' = None):
        self.val = int(x)
        self.next = next
        self.random = random
"""

class Solution:
    def copyRandomList(self, head: 'Optional[Node]') -> 'Optional[Node]':
        if not head:
            return None

        # Step 1: Create new nodes and insert them after each original node
        cur = head
        while cur:
            new_node = Node(cur.val)
            new_node.next = cur.next
            cur.next = new_node
            cur = new_node.next

        # Step 2: Assign random pointers for the new nodes
        cur = head
        while cur:
            if cur.random:
                cur.next.random = cur.random.next
            cur = cur.next.next

        # Step 3: Separate the new list from the original list
        cur = head
        new_head = head.next
        while cur:
            new_node = cur.next
            cur.next = new_node.next
            cur = cur.next
            if new_node.next:
                new_node.next = new_node.next.next

        return new_head

标签:node,head,cur,python,random,next,链表,new,leetcode
From: https://blog.csdn.net/Lucy_wzw/article/details/145321346

相关文章

  • Pyenv:Python 版本管理的终极指南
    Pyenv:Python版本管理的终极指南在Python开发中,管理多个Python版本是一个常见的挑战。Pyenv是一个强大的工具,允许开发者在同一台机器上轻松切换不同的Python版本。无论你是初学者还是专业开发者,Pyenv都能帮助你更高效地管理Python版本。本指南将详细介绍Pyenv......
  • Python算法模糊匹配:FuzzyWuzzy深度剖析,从入门到精通,解决你所有需要匹配的需求
    在数据科学和文本处理的世界中,字符串匹配是一个非常普遍的问题。FuzzyWuzzy作为一个强大的Python库,通过模糊匹配技术解决了许多由于拼写错误、格式不一致引起的问题。本文将详细介绍FuzzyWuzzy,从基本概念到高级应用,帮助你掌握这一工具。目录FuzzyWuzzy简介安装与快速开始基础......
  • Python · Jax | 在 python 3.8 上安装 jax,运行 offline RL 的 IQL
    致谢师兄的jax环境,完全按照师兄的conda_env.yml配置的(如何导出其他环境的conda_env.yml:Conda|如何(在新服务器上)复制一份旧服务器的conda环境,Linux服务器)目录01安装各种库02安装jax03安装dm_controlmetaworldd4rl04测试05各种库的参考版本首先,新建一个con......
  • LeetCode 221. 最大正方形
    问题描述解题思路动态规划定义状态:dp[i][j]表示矩阵中以(i,j)为右下角的最大正方形的边长。状态转移方程:如果matrix[i][j]为'1',则dp[i][j]=min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1。初始化:第一行和第一列的dp值等于matrix中的对应值。遍历:从......
  • LeetCode 931. 下降路径最小和
    题目描述解题思路这个问题可以通过动态规划来解决。我们定义一个二维数组dp,其中dp[i][j]表示从第一行到第i行,且第i行选择第j列元素的最小路径和。我们可以从第一行开始,逐行计算dp数组的值。算法步骤初始化dp数组的第一行与matrix的第一行相同,因为第一行的......
  • leetcode155.最小栈
    leetcode155.最小栈思路用两个栈,一个用来存本身,一个用来存最小值。代码#include<iostream>#include<memory>#include<stack>classMinStack{public:MinStack(){}voidpush(intval){_normal_stack.push(val);if(_min_stack.empty......
  • LeetCode 8. 字符串转换整数 (atoi)
    题目原题链接:LeetCode8.字符串转换整数(atoi)思路题目首先要判断空格。将前面的空格先一个个扣除。扣完空格记得判断是否到达字符串末尾。然后判断符号。用一个int存符号,正数为1,负数为-1。接下来题目又说前置零又说非数字字符又说数字,理一下思路,其实就是判断是否是数字,是......
  • Python高级编程(第2版)PDF免费下载
    Python高级编程(第2版)PDF免费下载freedownload本书基于Python3.5版本进行讲解,通过13章的内容,深度揭示了Python编程的高级技巧。本书从Python语言及其社区的现状开始介绍,对Python语法、命名规则、Python包的编写、部署代码、扩展程序开发、管理代码、文档编写、测试开发、代码......
  • 最新毕设-Django-新能源汽车推荐系统-30063(免费领项目)可做计算机毕业设计JAVA、PHP、
    摘要本论文主要论述了如何基于Django框架开发一个新能源汽车推荐系统,本系统将严格按照软件开发流程进行各个阶段的工作,爬取懂车帝的汽车信息,面向对象编程思想进行项目开发。在引言中,作者将论述新能源汽车推荐系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,......
  • Python多继承时子类如何调用指定父类
    在Python中,多继承是一种强大的特性,允许一个类同时继承多个父类的属性和方法。然而,当多个父类中存在同名方法时,子类需要明确调用哪个父类的方法。本文将详细介绍如何在多继承情况下,子类调用指定父类的方法。一、多继承的基本概念1.1多继承的定义多继承指一个类可以继承多个父类......