LeetCode 題解,記錄自己的 LeetCode 解題之路
介紹
leetcode 題解,記錄自己的 leetcode 解題之路。
本倉庫目前分為四個部分:
-
第一個部分是 leetcode 經典題目的解析,包括思路,關鍵點和具體的程式碼實現。
-
第二部分是對於資料結構與演算法的總結
-
第三部分是 anki 卡片, 將 leetcode 題目按照一定的方式記錄在 anki 中,方便大家記憶。
-
第四部分是計劃, 這裡會記錄將來要加入到以上三個部分內容
只有熟練掌握基礎的資料結構與演算法,才能對複雜問題迎刃有餘。
食用指南
-
對於最近新增的部分, 前面會有
:new: 標註 -
對於最近更新的部分, 前面會有
-
將來會在這裡更新anki卡片
-
這裡有一份leetcode官方賬號在知乎上給出的一個《網際網路公司最常見的面試演算法題有哪些?》的答案,我這裡儘量去覆蓋回答中的題目和知識點 原文地址: https://www.zhihu.com/question/24964987/answer/586425979
-
這裡有一張網際網路公司面試中經常考察的問題型別總結的思維導圖,我們可以結合圖片中的資訊分析一下。
(圖片來自leetcode)
其中演算法,主要是以下幾種:
- 基礎技巧:分治、二分、貪心
- 排序演算法:快速排序、歸併排序、計數排序
- 搜尋演算法:回溯、遞迴、深度優先遍歷,廣度優先遍歷,二叉搜尋樹等
- 圖論:最短路徑、最小生成樹
- 動態規劃:揹包問題、最長子序列
資料結構,主要有如下幾種:
- 陣列與連結串列:單 / 雙向連結串列
- 棧與佇列
- 雜湊表
- 堆:最大堆 / 最小堆
- 樹與圖:最近公共祖先、並查集
- 字串:字首樹(字典樹) / 字尾樹
精彩預告
42.trapping-rain-water-1(雨水收集問題):
瀏覽器中的棧:
回溯法解題:
- koko-eating-bananas:
傳送門
leetcode 經典題目的解析
簡單難度
-
- 26.remove-duplicates-from-sorted-array
-
:new: 88.merge-sorted-array - 136.single-number
- 167.two-sum-ii-input-array-is-sorted
-
:new: 169.majority-element - 190.reverse-bits
- 191.number-of-1-bits
- 203.remove-linked-list-elements
- 206.reverse-linked-list
- 219.contains-duplicate-ii
- 226.invert-binary-tree
- 283.move-zeroes
- 349.intersection-of-two-arrays
中等難度
- 2. Add Two Numbers
- 3. Longest Substring Without Repeating Characters
- 11.container-with-most-water
- 19. Remove Nth Node From End of List
- 24. Swap Nodes In Pairs
-
:new: 39.combination-sum -
:new: 40.combination-sum-ii -
:new: 46.permutations -
:new: 47.permutations-ii -
:new: 55.jump-game -
:new: 62.unique-paths - 75.sort-colors
-
:new: 78.subsets - 86.partition-list
-
:new: 90.subsets-ii - 92.reverse-linked-list-ii
- 94.binary-tree-inorder-traversal
- 102.binary-tree-level-order-traversal
- 103.binary-tree-zigzag-level-order-traversal
- 139.word-break
- 144.binary-tree-preorder-traversal
-
-
:new: 152.maximum-product-subarray - 199.binary-tree-right-side-view
- 201.bitwise-and-of-numbers-range
-
:new: 208.implement-trie-prefix-tree -
-
:new: 236.lowest-common-ancestor-of-a-binary-tree -
:new: 238.product-of-array-except-self - 240.search-a-2-d-matrix-ii
-
- 322.coin-change
-
:new: 334.increasing-triplet-subsequence - 328.odd-even-linked-list
- 416.partition-equal-subset-sum
- 445.add-two-numbers-ii
- 518.coin-change-2
- 875.koko-eating-bananas
- 877.stone-game
- 887.super-egg-drop
- 900.rle-iterator
困難難度
-
:new: 23.merge-k-sorted-lists -
:new: 42.trapping-rain-water -
:new: 128.longest-consecutive-sequence - 145.binary-tree-postorder-traversal
- 146.lru-cache
-
:new: 239.sliding-window-maximum -
:new: 295.find-median-from-data-stream.md - 301.remove-invalid-parentheses
資料結構與演算法的總結
-
-
- 動態規劃
- 哈夫曼編碼和遊程編碼
- 布隆過濾器
anki 卡片
Anki主要分為兩個部分:一部分是關鍵點到題目的對映,另一部分是題目到思路,關鍵點,程式碼的對映。
全部卡片都在 anki-card
使用方法:
anki - 檔案 - 匯入 - 下拉格式選擇“打包的 anki集合”,然後選中你下載好的檔案,確定即可。
更多關於anki使用方法的請檢視 anki官網
目前已更新卡片一覽(僅列舉正面):
- 二分法解決問題的關鍵點是什麼,相關問題有哪些
- 如何用棧的特點來簡化操作, 涉及到的題目有哪些?
- 雙指標問題的思路以及相關題目有哪些?
- 滑動視窗問題的思路以及相關題目有哪些?
- 回溯法解題的思路以及相關題目有哪些?
計劃
交流群
現在還是初級階段,需要大家的意見和反饋,為了減少溝通成本,我組建了交流群。大家可以掃碼進入
(qq 群)
(由於微信的限制,100個人以上只能邀請加入, 你可以新增我的機器人回覆“leetcode”拉你進群)