面試中最常考的數據結構與算法題,適合作為刷題的第一階段重點。
? 分類 & 推薦題目列表(精選 70 道核心題)
一、數組 & 字符串(共 15 題)
題目 | 類型 | LeetCode編號 |
---|
兩數之和 | 哈希表 | #1 |
盛最多水的容器 | 雙指針 | #11 |
三數之和 | 排序+雙指針 | #15 |
移動零 | 原地操作 | #283 |
合并兩個有序數組 | 雙指針 | #88 |
最長公共前綴 | 字符串處理 | #14 |
字符串相加 | 模擬 | #415 |
字符串轉換整數 | 字符串處理 | #8 |
有效的括號 | 棧 | #20 |
反轉字符串 | 雙指針 | #344 |
實現 strStr() | 雙指針/KMP | #28 |
最長不重復子串 | 滑動窗口 | #3 |
找出所有異位詞 | 哈希 + 排序 | #438 |
輪轉數組 | 數組翻轉 | #189 |
矩陣置零 | 空間優化 | #73 |
二、鏈表(共 10 題)
題目 | 類型 | LeetCode編號 |
---|
反轉鏈表 | 迭代/遞歸 | #206 |
合并兩個有序鏈表 | 遞歸/迭代 | #21 |
環形鏈表 | 快慢指針 | #141 |
相交鏈表 | 指針遍歷 | #160 |
刪除鏈表的倒數第 N 個節點 | 雙指針 | #19 |
鏈表中間結點 | 快慢指針 | #876 |
K 個一組反轉鏈表 | 高頻 | #25 |
排序鏈表 | 歸并排序 | #148 |
復制帶隨機指針的鏈表 | 哈希 | #138 |
刪除重復元素 II | 鏈表操作 | #82 |
三、棧、隊列、堆(共 8 題)
題目 | 類型 | LeetCode編號 |
---|
用棧實現隊列 | 雙棧 | #232 |
最小棧 | 輔助棧 | #155 |
有效的括號 | 棧 | #20 |
滑動窗口最大值 | 單調隊列/堆 | #239 |
用隊列實現棧 | 雙隊列 | #225 |
前 K 個高頻元素 | 小頂堆 | #347 |
數據流的中位數 | 雙堆 | #295 |
實現 LRU 緩存 | 雙鏈表+哈希 | #146 |
四、哈希表(共 6 題)
題目 | 類型 | LeetCode編號 |
---|
兩數之和 | 哈希表 | #1 |
存在重復元素 | 哈希表 | #217 |
有效的字母異位詞 | 計數器 | #242 |
字符串中的第一個唯一字符 | 哈希表 | #387 |
和為 K 的子數組 | 前綴和 + 哈希 | #560 |
四數之和 | 排序 + 哈希 | #18 |
五、二叉樹 & 圖(共 12 題)
題目 | 類型 | LeetCode編號 |
---|
二叉樹的最大深度 | DFS | #104 |
二叉樹的層序遍歷 | BFS | #102 |
對稱二叉樹 | DFS/BFS | #101 |
驗證二叉搜索樹 | 中序遍歷 | #98 |
另一棵樹的子樹 | 遞歸判斷 | #572 |
從前序與中序遍歷構造二叉樹 | 分治 | #105 |
二叉樹的最近公共祖先 | DFS | #236 |
翻轉二叉樹 | DFS | #226 |
合并二叉樹 | DFS | #617 |
課程表(拓撲排序) | 圖 | #207 |
克隆圖 | DFS/BFS | #133 |
二叉樹的直徑 | 后序DFS | #543 |
六、排序 & 查找(共 7 題)
題目 | 類型 | LeetCode編號 |
---|
合并區間 | 排序 | #56 |
搜索旋轉排序數組 | 二分查找 | #33 |
搜索二維矩陣 | 二分查找 | #74 |
尋找峰值 | 二分查找 | #162 |
第 K 個最大元素 | 快排 / 堆 | #215 |
快速排序手寫實現 | 模板題 | — |
合并 K 個升序鏈表 | 堆 | #23 |
七、動態規劃(共 12 題)
題目 | 類型 | LeetCode編號 |
---|
爬樓梯 | DP | #70 |
不同路徑 | DP | #62 |
零錢兌換 | 背包問題 | #322 |
0-1 背包(模板) | 背包DP | — |
最長回文子串 | 中心擴展 / DP | #5 |
編輯距離 | 字符串DP | #72 |
最長遞增子序列 | DP | #300 |
打家劫舍 | 線性DP | #198 |
最大子序和 | 貪心 / DP | #53 |
股票買賣系列 | 狀態機DP | #121、#122、#123 |
跳躍游戲 | 貪心 / DP | #55 |
買賣股票的最佳時機含冷凍期 | DP | #309 |
📝 補充建議
推薦刷題平臺:
- LeetCode(國際 + 中文)
- 牛客網劍指Offer專項訓練
- 洛谷
刷題工具建議:
- 使用 C++17 編寫并通過本地或 VSCode + CMake 運行測試;
- 建議寫一個
template.cpp
包含通用頭文件/結構體/調試宏,便于快速測試。