問題:輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標random指向乙個隨機節點),請對此鍊錶進行深拷貝,並返回拷貝後的頭結點。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)
解答1:
了解什麼是複雜鍊錶。
public
class
solution
randomlistnode node = phead;
//遍歷鍊錶,複製鍊錶中的每乙個節點。並將複製後的節點放在原節點的後面。比如,a->b->c->d
//複製後的新鍊錶為a->a'->b->b'->c->c'->d->d'
while
(node != null)
//重新遍歷舊鍊錶,複製舊煉表中的隨機節點給新鍊錶。如,a『.random=a.random.next
node = phead;
while
(node!=null)
//拆分鍊錶,把舊鍊錶和新鍊錶拆分出來。
node = phead;
randomlistnode node1 = phead.next;
while
(node !=null)
//返回新鍊錶
return node1;
}}
劍指offer第二十五題
題目描述 輸入乙個複雜鍊錶 每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點 返回結果為複製後複雜鍊錶的head。注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空 思路 1 在原來的鍊錶每個節點後面新增乙個節點,該節點下面連線著原來節點的下乙個...
《劍指offer》第二十五題(合併兩個排序的鍊錶)
面試題25 合併兩個排序的鍊錶 題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按 照遞增排序的。例如輸入圖3.11中的鍊錶1和鍊錶2,則合併之後的公升序鍊錶如鏈 表3所示。include include list.h listnode merge listnode phead1...
第二十五題 把陣列排成最小的數
輸入乙個正整數陣列,把陣列裡所有數字拼接起來排成乙個數,列印能拼接出的所有數字中最小的乙個。例如輸入陣列,則列印出這三個數字能排成的最小數字為321323。解題思路 先將整型陣列轉換成string陣列,然後將string陣列排序,最後將排好序的字串陣列拼接出來。關鍵就是制定排序規則。排序規則如下 若...