⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《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. 计划