輸入乙個複雜鍊錶(每個節點中有節點值,以及兩個指標,乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點),返回結果為複製後複雜鍊錶的head。(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)
由於該鍊錶不是普通的鍊錶,複製過程中還要對特殊指標進行複製,所以我們在原煉表上操作要分多次。剛開始的時候首先將鍊錶上的節點值進行複製,並放置在對應結點之後。
然後再度遍歷,這時候對random指標賦值,複製節點的random指標正好和它的前乙個節點的random指標指向的位置一樣。
最後對鍊錶進行拆分,鍊錶的偶數字置連線起來即為我們複製的鍊錶。
/*
struct randomlistnode
};*/
class
solution
curnode=phead;
while
(curnode)
curnode=node-
>next;
} randomlistnode* clonehead = phead-
>next;
curnode = phead;
randomlistnode* tmp;
while
(curnode-
>next)
return clonehead;}}
;
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
/*
struct treenode
};*/
class
solutionif(
!s.empty()
)else
pre = prootoftree;
prootoftree = prootoftree-
>right;}}
return res;}}
;
輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。
輸入乙個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。
class
solution
void
f(string str,vector
&result,
int begin)
}else}}
void
swap
(char
&fir,
char
&sec)
};
劍指 offer 刷題記錄
任誰都躲不過找工作的問題,好希望能多準備一些時間,奈何時間不等人,每天刷幾道題,並且記錄下來吧 def replacespace s write code here num space 0 new s for i in range len s if i num space 1 for i in ra...
劍指offer刷題記錄
遞迴法 鍊錶的後續遍歷,並用self.k來記錄倒數節點的位置,找到了就返回找到的節點,否則返回none coding utf 8 class listnode def init self,x self.val x self.next none class solution def init self...
劍指offer刷題記錄 綜合
將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入描述 輸入乙個字串,包括數字字母符號,可以為空 輸出描述 如果是合法的數值表達則返回該數字,否則返回0 做這個題目做的真的很煩,最麻煩的就是判斷當前是否越界。可儲存的最大的正數末位為7,可儲存...