英語 | 簡體中文
演算法和資料結構
這是演算法、資料結構和麵試問題及其解決方案的集合。該儲存庫包含我對常見演算法問題的解決方案以及 Java 資料結構的實作。我創建這個存儲庫是為了了解演算法。我正在不斷添加解決方案。
迄今為止提供了演算法、資料結構以及300 多個問題和解決方案。
問題
以下是依難度等級劃分的問題:
- 簡單的問題和答案
- 中等問題與解答
- 難題與解答
問題:
陣列
- 旋轉陣列
- 包含重複項
- 尋找峰值元素
- 最大子數組
- 數組中第 K 大的元素
- 尋找數組中的所有重複項
- 最長遞增子序列
- 旋轉影像、矩陣
- 打亂數組
- 尋找旋轉數組中的最小值
- 在旋轉數組中搜尋
鍊錶
- 單鍊錶實現
- 雙向鍊錶實現
- 刪除鍊錶中的節點
- 回文鍊錶
- 反向鍊錶
- 兩個鍊錶的交集
- 鍊錶循環
- 從清單末尾刪除第 N 個節點
- 合併排序列表
- 尋找鍊錶循環
- 合併 k 個排序列表
以及許多其他鍊錶問題
二元樹
- 二元樹層次順序遍歷
- 左葉總和
- 反轉二元樹
- 二元搜尋樹迭代器
- 二元樹後序遍歷
- 二元樹前序遍歷
- 將二元樹展平為鍊錶
- 對稱樹
- 二元樹中序遍歷
- 同一棵樹
- 二元樹的最大深度
- 平衡二元樹
- 二元樹的最小深度
- 排序列表到平衡二元搜尋樹
- 驗證二元搜尋樹
- 排序列表到平衡 BST
- BST 中的第 K 個最小元素
- 二元樹之字形層序遍歷
- 刪除 BST 中的節點
- BST 最低的共同祖先
- 二元樹左側視圖
- 二元樹右側視圖
- BST 模式
- 最頻繁子樹和
- 找出每行中最大的元素
- 序列化和反序列化 BT
還有許多其他樹木問題
數學
- 整數中斷
- 反轉位
- 回文數
- 數學pow
- 水壺和水問題
- 埃拉托斯特尼篩法
- 費馬的素性
- 評估逆波蘭表示法
堆疊和佇列
- 最小堆疊
- 最小隊列
- 使用佇列實作堆疊
- 使用堆疊實作佇列
- 排序堆疊
動態規劃
- 斐波那契數列
- 斷詞
- 子集和
- 0/1 背包問題
- 最短回文 (KMP)
- 最小平方和
- 字串的最大權重變換
- 硬幣找零
雜項
- 聯合查找
- 排列
- 子集
演算法
排序和搜尋
- 冒泡排序
- 插入排序
- 選擇排序
- 計數排序
- 二分查找,下限和上限
- 歸併排序
- 快速排序
圖表
- 廣度優先搜尋(BFS)
- 深度優先搜尋(DFS)
- Prim 的最小生成樹 (MST)
- KrusKal 的最小生成樹 (MST)
- 拓撲排序
- 最短路徑迪斯克特拉
- 最短路徑貝爾曼-福特
- A* 啟發式路徑查找
- 圖是二分圖嗎
- 圖片是否連通
- 循環檢測
- 無向圖橋接偵測
細繩
- 拉賓·卡普子序列搜索
- 勒索信
- 反轉字串
- 最長公共前綴
- 是字謎
- 針和乾草堆
- 斷詞
- 元字串
資料結構:
樹木
- 二元搜尋樹(遞歸)
- 二元搜尋樹(迭代)
- AVL樹
- Trie(前綴樹)
- 哈希數組樹
- LRU緩存
貢獻
您發現錯誤了嗎?有什麼辦法可以做得更好嗎?請隨時拉取請求。 :)