牛客網劍指offer第二十五題解答及知識點

2021-10-21 11:47:05 字數 680 閱讀 5110

問題:輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標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陣列排序,最後將排好序的字串陣列拼接出來。關鍵就是制定排序規則。排序規則如下 若...