zoukankan      html  css  js  c++  java
  • 牛客(25)复杂链表的复制

    //    题目描述
    //    输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),
    //    返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
        public static class RandomListNode {
            int label;
            RandomListNode next = null;
            RandomListNode random = null;
    
            RandomListNode(int label) {
                this.label = label;
            }
        }
    
        //  不会看的别人的思路
        public static RandomListNode Clone(RandomListNode pHead) {
            //保存头节点
            RandomListNode newLink = pHead;
            //复制节点并插入节点
            while (newLink != null) {
                //复制节点
                RandomListNode insert = new RandomListNode(newLink.label);
                //插入被复制的节点后面
                insert.next = newLink.next;
                newLink.next = insert;
                //指针移动到下一个要复制的节点
                newLink = insert.next;
            }
            //修改random
            newLink =pHead;
            while (newLink != null) {
                if (newLink.random != null) {
                    newLink.next.random = newLink.random.next;
                }
                newLink = newLink.next.next;
            }
    
    
    //      拆分
            RandomListNode clone =  new RandomListNode(0);
            RandomListNode result=clone;
            newLink =pHead;
            while (newLink != null) {
                clone.next=newLink.next;
                clone=clone.next;
                newLink.next = newLink.next.next;
                newLink=newLink.next;
    //            newLink=newLink.next.next;直接返回空
            }
    
            return result.next;
         }
  • 相关阅读:
    latin1字符集的数据转换为utf8字符集
    mysql使用utf8mb4经验吐血总结
    字符集GBK和UTF8的区别说明
    10分钟学会理解和解决MySQL乱码问题
    MySQL大小写敏感总结
    分区表基本类型
    form表单提交的几种方法
    Redis面试题及分布式集群
    ELK
    Linux下的crontab定时执行任务命令详解
  • 原文地址:https://www.cnblogs.com/kaibing/p/9023935.html
Copyright © 2011-2022 走看看