題目描述:
給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。
要求返回這個鍊錶的深拷貝。
示例:
輸入:', got 'eof' at end of input: …":"1","next":' at position 9: ref":"2"}̲,"val":2},"rand…ref」:「2」},「val」:1}
你必須返回給定頭的拷貝作為對轉殖列表的引用。
問題的難點就是在如何找到random結點,那麼我們可以考慮將複製的鍊錶跟在原先的鍊錶後面比如:原先的是1->2->3->4->null
那麼我們可以複製乙份將整個鍊錶變成1->1->2->2->3->3->4->4->null
後面的就可以找到random了,也就是.random.next就是找到的那個random
class solution
node tem =
head
;while
(tem != null)
node node =
head
;while
(node != null)
node =
head
;while
(node != null)
tem = head.next;
node result = tem;
node =
head
;while
(node != null && node.next != null)
node tem2 = tem.next.next;
node.next = tem1;
node = tem1;
tem.next = tem2;
tem = tem2;
}return result;
}}
複製帶隨機指標的鍊錶
給出乙個鍊錶,每個節點包含乙個額外增加的隨機指標可以指向鍊錶中的任何節點或空的節點。返回乙個深拷貝的鍊錶。public randomlistnode copyrandomlist randomlistnode head hashmapmap new hashmap randomlistnode du...
複製帶隨機鍊錶的指標
題目要求 給定乙個鍊錶,每個節點包含乙個額外增加的隨機指標,該指標可以指向鍊錶中的任何節點或空節點。要求返回這個鍊錶的深拷貝。這道題我知道的有兩種解法 一種是遍歷鍊錶,找到每乙個節點的隨機指標,但是這樣做時間複雜度是o n 2 另外一種是拷貝節點的方法,下面我用一幅圖具體講一下節點的拷貝思路。下面配...
複製帶隨機指標的鍊錶
解題思路是先建立一條複製鍊錶,複製鍊錶的val和原始鍊錶的val相對應,建立過程中,使用雜湊表建立原始結點和複製結點的對映。原始結點為key,複製結點為value。那麼,在複製鍊錶中查詢當前結點的隨機指標時,當前對應原始結點的隨機指標所對映的值value就是這個複製結點的隨機指標。這個解題思路關鍵在...