README.md

    LeetCode

    Travis Travis Travis Travis Travis Travis

    简体中文 | English


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

    :blue_book:电子书

    在线阅读

    这是我将我的所有公开的算法资料整理的一个电子书,全部题目信息中文化,以前会有一些英文描述,感谢 @CYL 的中文整理。

    限时免费下载!后期随时可能收费

    有些动图,在做成电子书(比如 pdf)的时候自然就变没了,如果需要看动图的, 可以去我的公众号《力扣加加》或者我的 leetcode 题解仓库看。

    epub 还是有动图的

    另外有些内容只在公众号发布,因此大家觉得内容不错的话,可以关注一下。如果再给 个星标就更棒啦!

    大家也可以用 Github 提供的 RSS 来订阅我的仓库更新。

    刷题群

    组队刷题活动,关注上面的公众号《力扣加加》回复 leetcode 即可获取进群方式,从此刷题不再孤单。

    另外春招已经开始了。你是不是已经开始准备了呢?为了帮助大家获得更好的 offer,lucifer 开辟了「春招冲冲冲」栏目。

    第一期我们的猎物是「虾皮」。来看看虾皮的算法题难度几何吧!

    图片加载不出来如何解决?

    https://github.com/fe-lucifer/fanqiang

    :octocat:仓库介绍

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

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

    • 第一个部分是 leetcode 经典题目的解析,包括思路,关键点和具体的代码实现。

    • 第二部分是对于数据结构与算法的总结

    • 第三部分是 anki 卡片, 将 leetcode 题目按照一定的方式记录在 anki 中,方便大家记忆。

    • 第四部分是每日一题,每日一题是在交流群(包括微信和 qq)里进行的一种活动,大家一起 解一道题,这样讨论问题更加集中,会得到更多的反馈。而且 这些题目可以被记录下来,日后会进行筛选添加到仓库的题解模块。

    • 第五部分是计划, 这里会记录将来要加入到以上三个部分内容

    :meat_on_bone:仓库食用指南

    • 对于最近添加的部分, 后面会有 🆕 标注
    • 对于最近更新的部分, 后面会有 🖊 标注
    • 这里有一张互联网公司面试中经常考察的问题类型总结的思维导图,我们可以结合图片中的信息分析一下。

    leetcode-zhihu

    (图片来自 leetcode)

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

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

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

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

    数据结构与算法的总结(25 篇)

    精选题解(9 篇)

    💻 插件

    或许是一个可以改变你刷题效率的浏览器扩展插件。

    插件地址:https://chrome.google.com/webstore/detail/leetcode-cheatsheet/fniccleejlofifaakbgppmbbcdfjonle?hl=en-US。

    不能访问谷歌商店的朋友可以去我的公众号回复插件获取离线版。强烈推荐大家使用谷歌商店安装, 这样如果有更新可以自动安装,毕竟咱们的插件更新还是蛮快的。

    :exclamation:怎么刷 LeetCode?

    📆《91 天学算法》限时活动

    很多教育机构宣传的 7 天,一个月搞定算法面试的,我大概都了解了下,不怎么靠谱。学习算法这东西,还是要考积累,没有量变是不可能有质变的。还有的人选择看书,这是一个不错的选择。但是很多人选了过时的或者质量差的书,又或者不会去写书中给的练习题,导致效果很差。

    基于这几个原因,我组织了一个 91 天刷题活动,通过一个相对比较长的时间(91 天)给出最新的学习路径,并强制大家打卡这种高强度练习来让大家在 91 天后遇见更好的自己。详细活动介绍可以点下方链接查看。另外往期的讲义也在下面了,大家可以看看合不合你的口味。

    最后送给大家一句话: 坚持下去,会有突然间成长的一天

    leetcode 经典题目的解析(200 多道)

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

    目前更新了 200 多道题解,加上专题涉及的题目,差不多有 300 道

    简单难度题目合集

    这里的题目难度比较小, 大多是模拟题,或者是很容易看出解法的题目,另外简单题目一般使用暴力法都是可以解决的。 这个时候只有看一下数据范围,思考下你的算法复杂度就行了。

    当然也不排除很多 hard 题目也可以暴力模拟,大家平时多注意数据范围即可。

    以下是我列举的经典题目(带 91 字样的表示出自 91 天学算法活动):

    :point_right::point_right::point_right:展开全部:point_left::point_left::point_left:

    中等难度题目合集

    中等题目是力扣比例最大的部分,因此这部分我的题解也是最多的。 大家不要太过追求难题,先把中等难度题目做熟了再说。

    这部分的题目要不需要我们挖掘题目的内含信息, 将其抽象成简单题目。 要么是一些写起来比较麻烦的题目, 一些人编码能力不行就挂了。因此大家一定要自己做, 即使看了题解”会了“,也要自己码一遍。自己不亲自写一遍,里面的细节永远不知道。

    以下是我列举的经典题目(带 91 字样的表示出自 91 天学算法活动):

    :point_right::point_right::point_right:展开全部:point_left::point_left::point_left:

    困难难度题目合集

    困难难度题目从类型上说多是:

    • 设计题
    • 游戏场景题目
    • 中等题目的 follow up

    从解法上来说,多是:

    • 图算法
    • 动态规划
    • 二分法
    • DFS & BFS
    • 状态压缩
    • 剪枝

    从逻辑上说, 要么就是非常难想到,要么就是非常难写代码。 这里我总结了几个技巧:

    1. 看题目的数据范围, 看能否暴力模拟
    2. 暴力枚举所有可能的算法往上套,比如图的题目。
    3. 总结和记忆解题模板,减少解题压力

    以下是我列举的经典题目(带 91 字样的表示出自 91 天学算法活动):

    :point_right::point_right::point_right:展开全部:point_left::point_left::point_left:

    🔱  anki 卡片

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

    全部卡片都在 anki-card

    使用方法:

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

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

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

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

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

    :chart_with_upwards_trend:大事件

    • 2021-02-23: star 破四万

    💝 贡献

    • 如果有想法和创意,请提 issue 或者进群提
    • 如果想贡献增加题解或者翻译, 可以参考 贡献指南

      关于如何提交题解,我写了一份 指南

    • 如果需要修改项目中图片,这里 存放了项目中绘制图的源代码, 大家可以用 draw.io 打开进行编辑。

    :love_letter:鸣谢

    感谢为这个项目作出贡献的所有 小伙伴

    License

    CC BY-NC-ND 4.0

    项目简介

    🚀 Github 镜像仓库 🚀

    源项目地址

    https://github.com/azl397985856/leetcode

    发行版本

    当前项目没有发行版本

    贡献者 68

    全部贡献者

    开发语言

    • JavaScript 81.3 %
    • Python 18.7 %