鍊錶解題模板:
1.雙指標法(可以解決大約百分之60的題目)
兩個關鍵點:
由於鍊錶是同向的,因此雙指標法的不同主要在下面兩點
(1)雙指標的起始距離
(2)雙指標的移動速度
根據上述的乙個或兩個不同可以找到鍊錶的中位數、鍊錶的倒數第n個數等。
2.遞迴法(recursion)
遞迴法三個關鍵步驟:
(1)詢問子問題的解;(注意此時將子問題想象成乙個黑盒子,不用思考其內部結構,跳出來想)
(2)在當前遞迴層做滿足題目要求的事情;例如反轉鍊錶時,需要將指標的指向進行變換。
(3)返回當前層的結果。
之所以採用遞迴法求解鍊錶相關的問題是因為:單鏈表只能從頭結點開始,依次訪問下乙個結點;這一點與陣列不一樣,陣列可以從任意乙個索引進行訪問;因此對於鍊錶如果能夠從鍊錶尾部開始訪問就方便很多,遞迴法正是利用了這一特性,當詢問子問題的解時,此時預設為子問題已解決,則此時鍊錶好像是可以從尾端訪問一樣。
遞迴法**模板:
listnode * recursion(listnode* head,其他引數)
//遞迴操作
(1)尋求子問題解
listnodelast = recursion(listnode head.next,…);
(2) 實現滿足題目要求的事情
…(例如斷開連線,重新連線等)
(3)返回當前層的結果
return last;
}後續將以若干個例子闡述對於不同鍊錶問題如何套用**模板。
python解題技巧 Python 解題技巧
python 解題技巧 一直都是用 c 和 c 解題,某題簡單解完後便心血來潮想用 python 解一次,發現一些問題,特寫此篇隨筆來記錄.一,輸入格式 例 輸入第 1 行給出正整數 n 和整數 m 第 2 行給出 n 個整數,其間以空格分隔.大多數題目都是要求一行給多個元素,其間以空格為間隔,而在...
回溯演算法的題型以及相應解題技巧
下面提供一些我做過的 回溯 演算法的問題,以便大家學習和理解 回溯 演算法。全排列 中等 全排列 ii 中等 思考為什麼造成了重複,如何在搜尋之前就判斷這一支會產生重複 組合總和 中等 組合總和 ii 中等 組合 中等 子集 中等 子集 ii 中等 剪枝技巧同 47 題 39 題 40 題 第 k ...
Python解題技巧
python解題技巧 一直都是用c 和c解題,某題簡單解完後便心血來潮想用python解一次,發現一些問題,特寫此篇隨筆來記錄。例 輸入第1行給出正整數n和整數m 第2行給出n個整數,其間以空格分隔。大多數題目都是要求一行給多個元素,其間以空格為間隔,而在python中只用input 是不行的,若多...