概述:
左耳朵耗子專欄《左耳聽風》 用戶自發每週完成一個ARTS:
1.Algorithm:每週至少做一個 leetcode 的算法題
2.Review:閱讀並點評至少一篇英文技術文章
3.Tip:學習至少一個技術技巧
4.Share:分享一篇有觀點和思考的技術文章
Algorithm
題目概述:
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.
代碼:
public class RandomListNodeDemo {
class RandomListNode {
int label;
RandomListNode next, random;
RandomListNode(int x) {
this.label = x;
}
}
public RandomListNode copyRandomList(RandomListNode head) {
RandomListNode p, copy;
if (head == null) {
return null;
}
//首先我們需要複製鏈表的內容
for (p = head.next; p != null; p = p.next) {
copy = new RandomListNode(p.label);
copy.next = p.next;
p.next = copy;
p = copy;
}
for (p = head; p!=null; p = p.next) {
copy = p.next;
copy.random =(p.random!=null?p.random.next:null);
}
RandomListNode newHead=copy=head.next;
for(p=head;p!=null;){
p=p.next=copy.next;
copy=copy.next=(p!=null?p.next:null);
}
return newHead;
}
}