美文网首页
【leetcode】No.138:copy-list-with-

【leetcode】No.138:copy-list-with-

作者: I讨厌鬼I | 来源:发表于2019-07-07 21:31 被阅读0次

题目描述

A linked list is given such that each node contains an additional random pointer which could point to any node in the list or null.
Return a deep copy of the list.

思路:

先新建copy节点插入到每一个节点后,然后遍历复制random指针,最后将两个链表拆分开,注意插入后步长为2,细心点就好。

代码:

/**
 * Definition for singly-linked list with a random pointer.
 * class RandomListNode {
 *     int label;
 *     RandomListNode next, random;
 *     RandomListNode(int x) { this.label = x; }
 * };
 */
public class Solution {
    public RandomListNode copyRandomList(RandomListNode head) {
        if (head == null) return null;
        // 添加新节点到旧节点后面
        RandomListNode cur = head;
        while (cur != null){
            insertNode(cur);
            cur = cur.next.next;
        }
        // 设置random指针
        cur = head;
        while (cur != null){
            if (cur.random != null){
                cur.next.random = cur.random.next;
            }
            else {
                cur.next.random = null;
            }
            cur = cur.next.next;
        }
        // 取下新节点
        cur = head;
        RandomListNode newHead = head.next;
        while (cur != null){
            divideNode(cur);
            cur = cur.next;
        }
        return newHead;
    }

    private void insertNode(RandomListNode cur){
        RandomListNode newNode = new RandomListNode(cur.label);
        newNode.next = cur.next;
        cur.next = newNode;
    }

    private void divideNode(RandomListNode cur){
        RandomListNode newCur = cur.next;
        cur.next = newCur.next;
        if (newCur.next != null){
            newCur.next = newCur.next.next;
        }
    }
}

相关文章

  • 【leetcode】No.138:copy-list-with-

    题目描述 A linked list is given such that each node contains ...

  • No.138

    学习固然重要,但定期的复盘也很重要,它如预习一样缺一不可。 定期复盘可以对当期的努力做一下总结,以便更好的安排接下...

  • 目标NO.138

    2020-4-1 星期二 晴 实现我的目标NO.138 今天谈谈我的目标,我的这个目标从去年就定好了,一直到...

  • 清杨书卡No.138

    关于美:一切美都有不令人俗的功效

  • NO.138 2018-07-14

    1.写软文,要提前构思好思路,列好整体框架。三分写,七分改,逐步完善。 2.如何让读者主动转发传播我们的文案:有利...

  • NO.138《美丽湖南》简单总结

  • No.138《祝你好运》

    核心书摘 《助你好运》是一本帮人们改善和提升运气的书。作者刘轩用自己的经历和研究告诉我们,运气并不是天注定的,也不...

  • NO.138 每日复盘21.10.12

    身体锻炼 1.每日步数11000步。完成11000步。 2.晚间锻炼,趁早腹肌撕裂练习第一天。 3.睡前冥想5分钟...

  • 周记(2021.12.6~12.12)NO.138

    一,本周回顾 1.写作计划七百字/每天一百字(7/7) 2.护嗓打卡七次/每天一次(完成1/7) 3.一周自由阅读...

  • week 2019-06-23

    LeetCode 16[M] LeetCode 17[M] LeetCode 926

网友评论

      本文标题:【leetcode】No.138:copy-list-with-

      本文链接:https://www.haomeiwen.com/subject/eqgihctx.html