1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| public class Solution { public class RandomListNode { int label; RandomListNode next = null; RandomListNode random = null; RandomListNode(int label) { this.label = label; } }
public RandomListNode Clone(RandomListNode pHead){ if(pHead==null){ return null; } RandomListNode newPHead = pHead; while(newPHead!=null){ RandomListNode newNode = new RandomListNode(newPHead.label); RandomListNode temp = newPHead.next; newPHead.next = newNode; newNode.next = temp; newPHead = newNode.next; } newPHead = pHead; while(newPHead!=null){ newPHead.next.random = newPHead.random==null?null:newPHead.random.next; newPHead = newPHead.next.next; } newPHead = pHead; RandomListNode result = pHead.next; while(newPHead.next!=null){ RandomListNode cloneNode = newPHead.next; newPHead.next = cloneNode.next; newPHead = cloneNode; } return result; } }
|