//time complexity: O(n), space: O(1)
public Node copyList(Node head) {
if(head == null) return null;
Node original = head;
Node copy = null;
while(original != null) {
copy = new Node(original.val);
copy.next = original.next;
original.next = copy;
original = copy.next;
}
original = head;
copy = original.next;
while(original != null) {
original.next.arb = original.arb.next;//consider every node will not point to null
original = original.next.next;
}
original = head;
copy = original.next;
Node result = copy;
while(original != null) {
original.next = original.next.next;
original = original.next;
if(copy.next != null) {
copy.next = copy.next.next;
copy = copy.next;
}
}
return result;
}
class Node {
Node next;
Node arb;
int val;
public Node(int val){
this.val = val;
}
}
Copy LinkedList With Arbitrary Node
To copy a linked list. Every node's next point to the next node, and another point to an arbitrary node.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.