簡體中文| English
我們的slogan 是:只有熟練基礎的資料結構與演算法,才能對複雜問題迎刃有餘。
我的新書《演算法通關之路》出版了。
實體版購書連結1
實體版購書連結2
電子版購書鏈接
https://github.com/fe-lucifer/fanqiang
力扣免費題目已經有了很多經典的了,也涵蓋了所有的題型,只是很多公司的真題都是鎖定的。個人覺得如果準備找工作的時候,可以買一個會員。另外會員很多leetbook 也可以看,結合學習計劃,效率還蠻高的。
現在力扣在每日一題基礎上還搞了一個plus 會員挑戰,每天刷題可以獲得積分,積分可以兌換力扣週邊。
如果你要買力扣會員的話,這裡有我的專屬力扣折扣:https://leetcode.cn/premium/?promoChannel=lucifer (年度會員多送兩個月會員,季度會員多送兩週會員)
很多教育機構宣傳的7 天,一個月搞定演算法面試的,我大概都了解了下,不太可靠。學習演算法這東西,還是要靠積累,沒有量變是不可能有質變的。還有的人選擇看書,這是一個不錯的選擇。但是很多人選了過時的或品質差的書,又或是不會去寫書中給的練習題,導致效果很差。
基於這幾個原因,我組織了一個91 天刷題活動,透過一個相對比較長的時間(91 天)給出最新的學習路徑,並強制大家打卡這種高強度練習來讓大家在91 天後遇見更好的自己。詳細活動介紹可以點下方連結查看。另外往期的講義也在下面了,大家可以看看合不合你的口味。
最後送給大家一句話:堅持下去,會有突然成長的一天。
點此參與
如果大家覺得上面的集體活動效率比較低,我目前也接受1v1 算法輔導,價格根據你的算法基礎以及想要學習的內容而定感興趣的可以加我微信,備註“算法輔導”,微信號DevelopeEngineer 。
leetcode 題解,記錄自己的leetcode 解題之路。
本倉庫目前分為五個部分:
第一個部分是leetcode 經典題目的解析,包括思路,關鍵點和具體的程式碼實作。
第二部分是對於資料結構與演算法的總結
第三部分是anki 卡片, 將leetcode 題目按照一定的方式記錄在anki 中,方便大家記憶。
第四部分是每日一題,每日一題是在交流群(包括微信和qq)裡進行的一種活動,大家一起解一道題,這樣討論問題更加集中,會得到更多的回饋。而這些題目可以被記錄下來,日後會進行篩選加入倉庫的題解模組。
第五部分是計劃, 這裡會記錄將來要加入到以上三個部分內容
注意:這裡的電子書並不是《演算法通關之路》的電子版,而是本倉庫內容的電子版!
線上閱讀地址
限時免費下載!後期隨時可能收費
可以去我的公眾號《力扣加加》後台回覆電子書取得!
epub 還是有動圖的
另外有些內容只在公眾號上發布,所以大家覺得內容不錯的話,可以關註一下。如果再給➕ 個星標就更棒啦!
(圖片來自leetcode)
其中演算法,主要是以下幾種:
資料結構,主要有以下幾種:
我在網路上找到一份《Interview Cheat Sheet》,這個PDF 列舉了面試的模板步驟。 ,詳細指示如何一步步完成面試。
這個pdf 開頭就提到了好的程式碼三個標準:
這寫的太好了。
緊接著,列舉了15 演算法面試的步驟。例如步驟一:當面試官提問完後,你需要先下來關鍵點(之後再下面寫註釋和代碼)看完我的感受就是,面試只要照這個來做,成功率蹭蹭提升
或許是一個可以改變你刷題效率的瀏覽器擴充插件。
外掛程式位址:https://chrome.google.com/webstore/detail/leetcode-cheatsheet/fniccleejlofifaakbgppmbbcdfjonle?hl=en-US。
無法造訪Google商店的朋友可以去我的公眾號回覆外掛程式取得離線版。強烈建議大家使用Google商店安裝, 這樣如果有更新可以自動安裝,畢竟咱們的插件更新還蠻快的。
另外大家也可以使用zerotrac 開發的用於計算力扣中題目分數的網站。這裡的分數指的是競賽分,大家可以根據自己的競賽分選擇稍微比自己競賽分高一點的題目進行練習,注意這個只是根據通過人數等計算的一個預估分數。網址:https://zerotrac.github.io/leetcode_problem_rating/
這裡僅列舉具代表性題目,並非全部題目
目前更新了200 多題解,加上專題涉及的題目,差不多有300 題。
這裡的題目難度比較小, 大多是模擬題,或是很容易看出解法的題目,另外簡單題目一般使用暴力法都是可以解決的。 這時候只有看一下數據範圍,思考下你的演算法複雜度就行了。
當然也不排除很多hard 題目也可以暴力模擬,大家平常多注意資料範圍即可。
以下是我列舉的經典題目(帶有91 字樣的表示出自91 天學演算法活動):
面試題目17.12. BiNode ?
0001. 兩數之和
0020. 有效的括號
0021. 合併兩個有序鍊錶
0026. 刪除排序數組中的重複項
0053. 最大子序和
0066. 加一91
0088. 合併兩個有序數組
0101. 對稱二元樹
0104. 二元樹的最大深度
0108. 將有序數組轉換為二元搜尋樹
0121. 買賣股票的最佳時機
0122. 買賣股票的最佳時機II
0125. 驗證回文串
0136. 只出現一次的數字
0155. 最小堆疊?
0160. 相交鍊錶91
0167. 兩數之和II 輸入有序數組
0169. 多數元素
0172. 階乘後的零
0190. 顛倒二進位
0191. 位1 的個數
0198. 打家劫舍
0203. 移除鍊錶元素
0206. 反轉鍊錶
0219. 存在重複元素II
0226. 翻轉二元樹
0232. 用堆疊實作佇列? 91
0263. 醜數
0283. 移動零
0342. 4 的冪?
0349. 兩個陣列的交集
0371. 兩整數之和
401. 二進製手錶
0437. 路徑總和III
0455. 分發餅乾
0504. 七進制數
0575. 分糖果
0606. 根據二元樹建立字串
0661. 圖片平滑器
0665. 非遞減數列
821. 字元的最短距離91
0874. 模擬行走機器人
1128. 等價骨牌對的數量
1260. 二維網格遷移
1332. 刪除回文子序列
2591. 將錢分給最多的兒童
中等題目是力扣比例最大的部分,因此這部分我的題解也是最多的。 大家不要太過追求難題,先把中等難度題目做熟了再說。
這部分的題目要不需要我們挖掘題目的內含訊息, 將其抽象成簡單題目。 要嘛是一些寫起來比較麻煩的題目, 有些人編碼能力不行就掛了。因此大家一定要自己做, 即使看了題解」會了“,也要自己碼一遍。自己不親自寫一遍,裡面的細節永遠不知道。
以下是我列舉的經典題目(帶有91 字樣的表示出自91 天學演算法活動):
訪談題17.09. 第k 個數
面試題目17.23. 最大黑方陣
面試題目16.16. 部分排序
Increasing Digits ?
Longest Contiguously Strictly Increasing Sublist After Deletion ?
Consecutive Wins
Sort-String-by-Flipping
Number of Substrings with Single Character Difference
Bus Fare ?
Minimum Dropping Path Sum
Longest-Matrix-Path-Length
Every Sublist Min Sum
Maximize the Number of Equivalent Pairs After Swaps
0002. 兩數相加
0003. 無重複字元的最長子字串
0005. 最長回文子串
0011. 盛最多水的容器
0015. 三數之和
0017. 電話號碼的字母組合
0019. 刪除鍊錶的倒數第N 個節點
0022. 括號生成
0024. 兩兩交換鍊錶中的節點
0029. 兩數相除
0031. 下一個排列
0033. 搜尋旋轉排序數組
0039. 組合總和
0040. 組合總和II
0046. 全排列
0047. 全排列II
0048. 旋轉影像
0049. 字母異位詞分組
0050. Pow(x, n) ?
0055. 跳躍遊戲
0056. 合併區間
0060. 第k 個排列?
0061. 旋轉鍊錶91
0062. 不同路徑
0073. 矩陣置零
0075. 顏色分類?
0078. 子集
0079. 單字搜尋
0080. 刪除排序數組中的重複項II
0086. 分隔鍊錶
0090. 子集II
0091. 解碼方法
0092. 反轉鍊錶II
0094. 二元樹的中序遍歷?
0095. 不同的二元搜尋樹II
0096. 不同的二元搜尋樹
0098. 驗證二元搜尋樹
0102. 二元樹的層序遍歷
0103. 二元樹的鋸齒形層次遍歷
0113. 路徑總和II
0129. 求根到葉子節點數字和?
0130. 被圍繞的區域
0131. 分割回文串
0139. 單字拆分
0144. 二元樹的前序遍歷
0147. 對鍊錶進行插入排序
0150. 逆波蘭表達式求值
0152. 乘積最大子數組
0153. 找出旋轉排序數組中的最小值
0199. 二元樹的右視圖?
0200. 島嶼數量?
0201. 數字範圍按位與
0208. 實作Trie (前綴樹)
0209. 長度最小的子數組
0211. 新增與搜尋單字- 資料結構設計
0215. 陣列中的第K 個最大元素
0220. 存在重複元素III
0221. 最大正方形
0227. 基本計算器II
0229. 求眾數II
0230. 二元搜尋樹中第K 小的元素
0236. 二元樹的最近公共祖先
0238. 除自身以外數組的乘積
0240. 搜尋二維矩陣II
0279. 完全平方數
0309. 最佳買賣股票時機含冷凍期
0322. 零錢兌換?
0324. 擺動排序II
0328. 奇偶鍊錶
0331. 驗證二元樹的前序序列化
0334. 遞增的三元子序列
0337. 打家劫舍III
0343. 整數拆分
0365. 水壺問題
0378. 有序矩陣中第K 小的元素
0380. 常數時間插入、刪除與取得隨機元素
0385. 迷你語法分析器
0394. 字串解碼91
0416. 分割等和子集
0424. 替換後的最長重複字符
0438. 找出字串中所有字母異位詞
0445. 兩數相加II
0454. 四數相加II
0456. 132 模式
0457.457. 環形數組是否存在循環
0464. 我能贏麼
0470. 用Rand7() 實作Rand10
0473. 火柴拼正方形?
0494. 目標和
0516. 最長回文子序列
0513. 找樹左下角的值91
0518. 零錢兌換II
0525. 連續數組
0547. 省份數量
0560. 和為K 的子數組
0609. 在系統中尋找重複文件
0611. 有效三角形的個數?
0673. 最長遞增子序列的個數
0686. 重複疊加字串匹配
0710. 黑名單中的隨機數
0714. 買賣股票的最佳時機含手續費
0718. 最長重複子數組
0735. 行星碰撞?
0754. 到達終點數字
0785. 判斷二分圖
0790. 多米諾和托米諾平鋪
0799. 香檳塔
0801. 使序列遞增的最小交換次數
0816. 模糊座標
0820. 單字的壓縮編碼
0838. 推多米諾
0873. 最長的斐波那契子序列的長度
0875. 愛吃香蕉的珂珂
0877. 石子遊戲
0886. 可能的二分法
0898. 子數組按位或操作
0900. RLE 迭代器
0911. 線上選舉
0912. 排序數組
0918. 環形子數組的最大和?
0932. 漂亮數組
0935. 騎士撥號器
0947. 移除最多的同行或同列石頭
0959. 由斜槓劃分區域
0978. 最長湍流子數組
0987. 二元樹的垂序遍歷91
1004. 最大連續1 的個數III
1011. 在D 天內送達包裹的能力
1014. 最佳觀光組合
1015. 可被K 整除的最小整數
1019. 鍊錶中的下一個更大節點
1020. 飛地的數量
1023. 駝峰式匹配
1031. 兩個非重疊子數組的最大和
1043. 分隔數組以獲得最大和
1053. 交換一次的先前排列)
1104. 二元樹尋路
1129. 顏色交替的最短路徑
1131. 絕對值表達式的最大值
1138. 字母板上的路徑
1186. 刪除一次得到子數組最大和
1218. 最長定差子序列
1227. 飛機座位分配機率?
1261. 在受污染的二元樹中找出元素
1262. 可被三整除的最大和
1297. 子字串的最大出現次數
1310. 子數組異或查詢
1334. 閾值距離內鄰居最少的城市
1371. 每個元音包含偶數次的最長子字串
1381. 設計一個支援增量操作的堆疊91
1423. 可獲得的最大點數
1438. 絕對差不超過限制的最長連續子數組
1558. 得到目標數組的最少函數呼叫次數
1574. 刪除最短的子數組使剩餘數組有序
1589. 所有排列中的最大和
1631. 最小體力消耗路徑
1638. 統計只差一個字元的子字串數目
1658. 將x 減到0 的最小運算元
1697. 檢查邊長度限制的路徑是否存在
1737. 滿足三條件之一需改變的最少字元數?
1770. 執行乘法運算的最大分數? 91
1793. 好子數組的最大分數
1834. 單線程CPU
1899. 合併若干三元組以形成目標三元組?
1904. 你完成的完整對局數
1906. 查詢差絕對值的最小值
2007. 從雙倍數組還原原數組
2008. 計程車的最大獲利
2592. 最大化數組的偉大值
2593. 標記所有元素後數組的分數
2817. 限制條件下元素之間的最小絕對差
2865. 美麗塔I
2866. 美麗塔II
2939. 最大異或乘積
5935. 適合打劫銀行的日子
5936. 引爆最多的炸彈
5965. 相同元素的間隔之和
6021. 字串中最多數目的子字串
困難難度題目從類型上說多是:
從解法上來說,多是:
從邏輯上說, 要嘛就是非常難想到,要嘛就是非常難寫程式碼。 由於有時候需要組合多種演算法,因此這部分題目的難度是最大的。
這裡我總結了幾個技巧:
以下是我列舉的經典題目(帶有91 字樣的表示出自91 天學演算法活動):
LCP 20. 快速公車
LCP 21. 追逐遊戲?
Number Stream to Intervals
Triple Inversion 91
Kth Pair Distance 91
Minimum Light Radius 91
Largest Equivalent Set of Pairs ?
Ticket-Order.md
Connected-Road-to-Destination
0004. 找出兩個正序數組的中位數?
0023. 合併K 個升序鍊錶
0025. K 個一組翻轉鍊錶?
0030. 串聯所有單字的子串
0032. 最長有效括號
0042. 接雨水
0052. N 皇后II
0057. 插入區間
0065. 有效數字
0084. 長條圖中最大的長方形
0085. 最大矩形
0087. 擾亂字串
0124. 二元樹中的最大路徑和
0128. 最長連續序列
0132. 分割回文串II ?
0140. 單字拆分II
0145. 二元樹的後序遍歷
0146. LRU 快取機制
0154. 找出旋轉排序數組中的最小值II
0212. 單字搜尋II
0239. 滑動視窗最大值?
0295. 資料流的中位數
0297. 二元樹的序列化與反序列化91
0301. 刪除無效的括號
0312. 戳氣球
330. 依要求補齊數組
0335. 路徑交叉
0460. LFU 緩存
0472. 連接詞
0480. 滑動視窗中位數
0483. 最小好進位
0488. 祖瑪遊戲
0493. 翻轉對
0664. 奇怪的印表機
0679. 24 點遊戲
0715. Range 模組?
0726. 原子的數量
0768. 最多能完成排序的區塊II 91
0805. 陣列的平均值分割
0839. 相似字串組
0887. 雞蛋掉落
0895. 最大頻率棧
0909. 蛇梯棋
0975. 奇偶跳
0995. K 連續位的最小翻轉次數
1032. 字元流
1168. 水資源分配最佳化
1178. 猜字謎
1203. 專案管理
1255. 得分最高的單字集合
1345. 跳躍遊戲IV
1449. 數字成本和為目標值的最大數字
1494. 平行課程II
1521. 找出最接近目標值的函數值
1526. 形成目標數組的子數組最少增加次數
1639. 透過給定字典構造目標字串的方案數new
1649. 透過指令建立有序數組
1671. 得到山形數組最少的刪除次數
1707. 與陣列中元素的最大異或值
1713. 得到子序列的最少操作次數
1723. 完成所有工作的最短時間
1787. 使所有區間的異或結果為零
1835. 所有數對位與結果的異或和
1871. 跳躍遊戲VII ?
1872. 石子遊戲VIII
1883. 準時抵達會議現場的最小跳過休息次數
1970. 你能穿過矩陣的最後一天
2009. 使陣列連續的最少操作數
2025. 分割數組的最多方案數
2030. 含特定字母的最小子序列
2102. 序列順序查詢
2141. 同時運行N 台電腦的最長時間
2179. 統計數組中好三元組數目?
2209. 用地毯覆蓋後最少的白色磚塊?
2281. 巫師的總力量和
2306. 公司命名枚舉優化好題
2312. 賣木塊動態規劃經典題
2842. 統計一個字串的k 子序列美麗值最大的數目
2972. 統計移除遞增子數組的數目II
3027. 人員站位的方案數II
3041. 修改數組後最大化數組中的連續元素數組
3082. 求所有子序列的能量和
3108. 帶權圖裡旅途的最小代價
3347. 執行操作後元素的最高頻率II
3336. 最大公約數相等的子序列數量
Anki 主要分為兩個部分:一部分是關鍵點到題目的映射,另一部分是題目到思路,關鍵點,代碼的映射。
全部卡片都在anki-card
使用方法:
anki - 文件- 導入- 下拉格式選擇“打包的anki 集合”,然後選中你下載好的文件,確定即可。
更多關於anki 使用方法的請參閱anki 官網
大家也可以加我微信好友交流!
2019-07-10 :紀念項目Star 突破1W 的一個短文, 記錄了項目的"興起"之路,大家有興趣可以看一下,如果對這個項目感興趣,請點擊一下Star , 項目會持續更新,感謝大家的支持。
2019-10-08: 紀念LeetCode 項目Star 突破2W,並且Github 搜尋“LeetCode”,排名第一。
2020-04-12: 專案突破三萬Star。
2020-04-14: 官網力扣加加
線啦?????,有專題講解,每日一題,下載區和視頻題解,後續會增加更多內容,還不趕緊收藏起來?網址:http://leetcode-solution.cn/
關於如何提交題解,我寫了一份指南
感謝為這個計畫做出貢獻的所有小夥伴
CC BY-NC-ND 4.0