《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 http://www.iocoder.cn/Fight/Internet-big-factory-algorithm-interview-questions-set-I-kneel-after-watching/ 「芋道源码」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

介绍

leetcode 题解,记录自己的 leetcode 解题之路。

本仓库目前分为五个部分:

  • 第一个部分是 leetcode 经典题目的解析,包括思路,关键点和具体的代码实现。
  • 第二部分是对于数据结构与算法的总结
  • 第三部分是 anki 卡片, 将 leetcode 题目按照一定的方式记录在 anki 中,方便大家记忆。
  • 第四部分是每日一题
  • 第五部分是计划, 这里会记录将来要加入到以上三个部分内容

只有熟练掌握基础的数据结构与算法,才能对复杂问题迎刃有余。

使用指南

  • 对于最近添加的部分, 后面会有 🆕 标注

  • 对于最近更新的部分, 后面会有 🖊 标注

  • 将来会在这里更新anki卡片

  • 这里有一张互联网公司面试中经常考察的问题类型总结的思维导图,我们可以结合图片中的信息分析一下。

其中算法,主要是以下几种:

  • 基础技巧:分治、二分、贪心
  • 排序算法:快速排序、归并排序、计数排序
  • 搜索算法:回溯、递归、深度优先遍历,广度优先遍历,二叉搜索树等
  • 图论:最短路径、最小生成树
  • 动态规划:背包问题、最长子序列

数据结构,主要有如下几种:

  • 数组与链表:单 / 双向链表
  • 栈与队列
  • 哈希表
  • 堆:最大堆 / 最小堆
  • 树与图:最近公共祖先、并查集
  • 字符串:前缀树(字典树) / 后缀树

精彩预告

0042.trapping-rain-water:

浏览器中的栈:

backtrack problems:

0198.house-robber:

0454.4-sum-ii:

Top题目进度

  • Top 100 Liked Questions (54 / 100)
  • Top Interview Questions (82 / 145)

传送门

leetcode 经典题目的解析**

这里仅列举具有代表性题目,并不是全部题目

简单难度**

  • 0020.Valid Parentheses
  • 0026.remove-duplicates-from-sorted-array
  • 0088.merge-sorted-array
  • 0104.maximum-depth-of-binary-tree 🆕
  • 0121.best-time-to-buy-and-sell-stock
  • 0122.best-time-to-buy-and-sell-stock-ii
  • 0125.valid-palindrome 🆕
  • 0136.single-number
  • 0155.min-stack 🆕
  • 0167.two-sum-ii-input-array-is-sorted
  • 0172.factorial-trailing-zeroes 🆕
  • 0169.majority-element
  • 0190.reverse-bits
  • 0191.number-of-1-bits
  • 0198.house-robber
  • 0203.remove-linked-list-elements
  • 0206.reverse-linked-list
  • 0219.contains-duplicate-ii
  • 0226.invert-binary-tree
  • 0263.ugly-number
  • 0283.move-zeroes
  • 0342.power-of-four
  • 0349.intersection-of-two-arrays
  • 0371.sum-of-two-integers
  • 0575.distribute-candies

中等难度

    1. Add Two Numbers
    1. Longest Substring Without Repeating Characters
  • 0005.longest-palindromic-substring 🆕
  • 0011.container-with-most-water
  • 0015.3-sum
    1. Remove Nth Node From End of List
    1. Swap Nodes In Pairs
  • 0029.divide-two-integers 🆕
  • 0039.combination-sum
  • 0040.combination-sum-ii
  • 0046.permutations
  • 0047.permutations-ii
  • 0048.rotate-image 🆕
  • 0049.group-anagrams 🆕
  • 0055.jump-game
  • 0056.merge-intervals
  • 0062.unique-paths
  • 0073.set-matrix-zeroes
  • 0075.sort-colors
  • 0078.subsets
  • 0086.partition-list
  • 0090.subsets-ii
  • 0091.decode-ways
  • 0092.reverse-linked-list-ii
  • 0094.binary-tree-inorder-traversal
  • 0098.validate-binary-search-tree 🆕
  • 0102.binary-tree-level-order-traversal
  • 0103.binary-tree-zigzag-level-order-traversal
  • 0131.palindrome-partitioning 🆕
  • 0139.word-break
  • 0144.binary-tree-preorder-traversal
  • 0150.evaluate-reverse-polish-notation
  • 0152.maximum-product-subarray
  • 0199.binary-tree-right-side-view
  • 0201.bitwise-and-of-numbers-range
  • 0208.implement-trie-prefix-tree
  • 0209.minimum-size-subarray-sum
  • 0230.kth-smallest-element-in-a-bst
  • 0236.lowest-common-ancestor-of-a-binary-tree🆕
  • 0238.product-of-array-except-self
  • 0240.search-a-2-d-matrix-ii
  • 0279.perfect-squares
  • 0309.best-time-to-buy-and-sell-stock-with-cooldown 🆕
  • 0322.coin-change
  • 0328.odd-even-linked-list
  • 0334.increasing-triplet-subsequence
  • 0365.water-and-jug-problem
  • 0416.partition-equal-subset-sum
  • 0445.add-two-numbers-ii
  • 0454.4-sum-ii
  • 0494.target-sum
  • 0516.longest-palindromic-subsequence 🆕
  • 0518.coin-change-2
  • 0609.find-duplicate-file-in-system 🆕
  • 0875.koko-eating-bananas
  • 0877.stone-game
  • 0887.super-egg-drop
  • 0900.rle-iterator
  • 1031.maximum-sum-of-two-non-overlapping-subarrays 🆕

困难难度

  • 0023.merge-k-sorted-lists
  • 0032.longest-valid-parentheses 🆕
  • 0042.trapping-rain-water
  • 0128.longest-consecutive-sequence 🆕
  • 0145.binary-tree-postorder-traversal
  • 0146.lru-cache
  • 0239.sliding-window-maximum
  • 0295.find-median-from-data-stream 🆕
  • 0301.remove-invalid-parentheses

数据结构与算法的总结

  • 数据结构(草稿)
  • 基础算法(草稿)
  • 二叉树的遍历
  • 动态规划
  • 哈夫曼编码和游程编码
  • 布隆过滤器
  • 字符串问题

anki 卡片

Anki主要分为两个部分:一部分是关键点到题目的映射,另一部分是题目到思路,关键点,代码的映射。

全部卡片都在anki-card

使用方法:

anki - 文件 - 导入 - 下拉格式选择“打包的 anki集合”,然后选中你下载好的文件,确定即可。

更多关于anki使用方法的请查看anki官网

目前已更新卡片一览(仅列举正面):

  • 二分法解决问题的关键点是什么,相关问题有哪些?
  • 如何用栈的特点来简化操作, 涉及到的题目有哪些?
  • 双指针问题的思路以及相关题目有哪些?
  • 滑动窗口问题的思路以及相关题目有哪些?
  • 回溯法解题的思路以及相关题目有哪些?
  • 数论解决问题的关键点是什么,相关问题有哪些?
  • 位运算解决问题的关键点是什么,相关问题有哪些?

已加入的题目有:#2 #3 #11

每日一题

  • 每日一题汇总
  • 每日一题认领区

计划

  • anki 卡片 完善
  • 字符串类问题汇总
文章目录
  1. 1. 介绍
  2. 2. 使用指南
  3. 3. 精彩预告
  4. 4. Top题目进度
  5. 5. 传送门
    1. 5.0.1. leetcode 经典题目的解析**
    2. 5.0.2. 简单难度**
    3. 5.0.3. 中等难度
    4. 5.0.4. 困难难度
    5. 5.0.5. 数据结构与算法的总结
    6. 5.0.6. anki 卡片
    7. 5.0.7. 每日一题
    8. 5.0.8. 计划