leetcode でのサーフィン 私はこの質問を試してみたかった: リンクされたリストは、各ノードがリスト内の任意のノードまたは null を指す可能性のある追加のランダム ポインターを含むように与えられます。リストのディープ コピーを返します。ただし、採点者を通過しておらず、その理由がわからないため、コードにエラーがあるようです。
私のコードには 3 つのフェーズがあります。
- 1 番目と 2 番目のノードの間に新しいノードを挿入します。
- オリジナルのランダム ポインタをコピー ノードのランダム ポインタにコピーします。
- 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) {
// 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;
}
}