【问题标题】:Copy list with random pointer error?带有随机指针错误的复制列表?
【发布时间】:2013-11-10 19:08:10
【问题描述】:

在 leetcode 上冲浪我想尝试这个问题:给出了一个链表,使得每个节点都包含一个额外的随机指针,该指针可以指向列表中的任何节点或 null。 返回列表的深层副本。但是,我的代码似乎存在错误,因为它没有通过评分器并且没有告诉我原因。

我的代码有 3 个阶段。

  1. 我在第一个和第二个节点之间插入新节点,所以..on。
  2. 我将原始的随机指针复制到复制节点的随机指针。
  3. 我将这两个列表分开。

你能帮忙吗?谢谢。


/**
 * 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) {
        // Note: The Solution object is instantiated only once and is reused by each test case.

        if(head == null) return head;

        RandomListNode current = head;
        RandomListNode temp = null;
        RandomListNode solution = null;
        //insertion
        while(current != null){
            RandomListNode clone = new RandomListNode(current.label);
            temp = current.next;
            current.next = clone;
            clone.next = temp;
            current = current.next.next;
        }

        //copy random
        current = head;
        while(current != null){
            if(current.random!=null){
            current.next.random = current.random.next;
            }
            current = current.next.next;
        }

        //separation
        current = head;
        solution  = current.next;
        while(current != null){
            temp = current.next;
            current.next = current.next.next;
            temp.next = temp.next.next;
            current = current.next.next;
        }

        return solution;
    }
}

【问题讨论】:

    标签: java linked-list deep-copy


    【解决方案1】:

    不要在最后的current = current.next.next 中跳得太远——你已经将current.next 分配给current.next.next(这是下一个原始节点),所以我认为最后一行在最后循环应该只是current = current.next?

    【讨论】:

    • 你的权利。我也没有推进临时指针。我找到了解决方案。谢谢
    猜你喜欢
    • 2017-04-15
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 2013-02-20
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    相关资源
    最近更新 更多