• 复杂链表的复制


    输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。

    一个巧妙的解法是这样的:复制next 如原来是A->B->C 变成A->A'->B->B'->C->C',然后通过前一个的random指针定位后一个random指针,然后拆分成两个链表即可。时间复杂度和空间复杂度都是O(n)。

    实现代码:

    /*
    public class RandomListNode {
        int label;
        RandomListNode next = null;
        RandomListNode random = null;
    
        RandomListNode(int label) {
            this.label = label;
        }
    }
    */
    public class Solution {
        public RandomListNode Clone(RandomListNode pHead)
        {
            if(pHead==null)
                return null;
            RandomListNode curNode = pHead;
            while(curNode != null) {
                RandomListNode node = new RandomListNode(curNode.label);
                node.next = curNode.next;
                
                curNode.next = node;
                curNode = node.next;
            }
            
            curNode = pHead;
            while(curNode != null) {
                if(curNode.random != null) {
                    curNode.next.random = curNode.random.next;
                }
                curNode = curNode.next.next;
            }
            
            curNode = pHead;
            RandomListNode curClonedHead = null;
            RandomListNode curClonedNode = null;
    
            if(curNode != null) {
                curClonedHead = curClonedNode = curNode.next;
                curNode.next = curClonedNode.next;
                curNode = curNode.next;
            }
    
            while(curNode != null) {
                curClonedNode.next = curNode.next;
                curClonedNode = curClonedNode.next;
                curNode.next = curClonedNode.next;
                curNode = curNode.next;
            }
            return curClonedHead;
            
        }
        
        
    }
  • 相关阅读:
    ros 编译指定包
    TCP_IP Sockets编程C语言实现第2版 源码下载
    python 文件,文件夹,路径操作
    python 导入包
    ImportError: No module named rospy
    python安装simplejson
    EditPlus 中添加 Win32 ASM 语法支持
    程序设计学习与试验系统下载
    masm for windows2015 下载安装
    dosbox+masm汇编环境的安装和使用
  • 原文地址:https://www.cnblogs.com/wxisme/p/5440977.html
Copyright © 2020-2023  润新知