之前有補充過二叉搜索樹的相關內容,傳送門。我們知道一棵高度為h的二叉搜索樹,它可以支持任何一種基本動態集合操作,其時間復雜度均為O(h)。因此,如果搜索樹的高度較高時,這些集合操作可能並不比鏈表上 ...
KMP算法 關於字符串匹配的算法,最知名的莫過於KMP算法了,盡管我們日常搬磚幾乎不可能去親手實現一個KMP算法,但作為一種算法學習的鍛煉也是很好的,所以記錄一下。 KMP算法是根據三位作者 D.E.Knuth, J.H.Morris和V.R.Pratt 的名字來命名的,算法的全稱是Knuth Morris Pratt算法,簡稱為KMP算法。 關於字符串匹配,我們假設要在字符串A中查找字符串B,那 ...
2020-02-16 16:04 0 1510 推薦指數:
之前有補充過二叉搜索樹的相關內容,傳送門。我們知道一棵高度為h的二叉搜索樹,它可以支持任何一種基本動態集合操作,其時間復雜度均為O(h)。因此,如果搜索樹的高度較高時,這些集合操作可能並不比鏈表上 ...
記錄一下《算法導論》里關於動態規划的一些知識點以及自己的想法。 動態規划 動態規划是通過組合子問題來求解原問題的一種算法。動態規划應用於子問題重疊的情況,即不同的子問題具有公共的子子問題(子問題的求解是遞歸進行的,將其划分為更小的子子問題)。這種情況下,動態規划算法對每個子子問題只求 ...
在刷Leetcode的過程中,發現一個問題。如果按照題號來刷會遇到使用同一種算法的不同題目,如果不詳細講解就梳理的不夠清晰,但是如果每次遇到相同類型講解就太冗余。 於是萌生了按照專題講解知識點的想法,找到了以下這本書。 本書以海量圖解的形式,詳細講解常用的數據結構與算法,又融入大量的競賽 ...
1、 執行 Python 腳本的兩種方式 交互方式:命令行 Windows操作系統下,快捷鍵cmd,輸入“python”啟動交互式python解釋器。 文件方式:python文件 ...
最近重新學習數據結構與算法以及刷leetcode算法題時,發現不少jdk自帶的方法可以提升刷題的效率。這些小技巧不僅僅對刷算法題帶來便利,對我們平時開發也是很有幫助的。本文以java語言為基礎,記錄了目前已經使用或看到過的一些小技巧,后續在刷題過程中,還會持續更新 ...
本文接着上一篇文章《LeetCode刷題總結-數組篇(上)》,繼續講第二個常考問題:矩陣問題。 矩陣也可以稱為二維數組。在LeetCode相關習題中,作者總結的考點有:矩陣元素的遍歷、矩陣位置的旋轉、矩陣行或列次序的交換、空間復雜度為O(1)等。本期共12道題,2道簡單題,8道 ...
最近刷題倒是沒停,但是感覺大部分遇到的不是很適合拿來水博客,畢竟方法套路比較相似。年兄推薦下做了兩道前綴和的題,感覺這類題型的思路很棒,也可以歸納成一個方法,故再來水一篇。題目均來自力扣Leetcode,傳送門。 簡單來說,前綴和適合於解決 連續,求和 相關的問題。遇到的問題如果包含相關 ...
數組是算法中最常用的一種數據結構,也是面試中最常考的考點。在LeetCode題庫中,標記為數組類型的習題到目前為止,已累計到了202題。然而,這202道習題並不是每道題只標記為數組一個考點,大部分習題都有兩到三個考點。比如,考查數組+哈希表、數組+動態規划+數學、數組+回溯 ...