Skip to content

YongtaoGe/LeetCode-Solution-Well-Formed

 
 

Repository files navigation

LeetCode-Solution-Well-Formed

项目更名说明

  • 更名为 Well-Formed 意为「格式良好」。我个人觉得代码的可读性是非常重要的,代码可读的前提是「格式良好」,在 Intellij Idea、PyCharm、CLion 中,我使用最多的快捷键就是 ⌥ + ⌘ + L (Reformate Code),希望看到这个项目的朋友们,即使是刷题这种纯粹是「自娱自乐」的项目,也能够做到格式良好,方便他人和自己阅读。

补充说明:本人英语水平有限,想不到更好的名字,如果您有更好的想法,也欢迎告诉我,我一直都在为起名这件事情犯愁。

  • 添加了 Java 和 C++ 语言的代码。

项目说明

  • 本代码仓库是我在学习《算法与数据结构》的时候,在 LeetCode(中文版) 上做的练习 。最开始的时候只有 Python 代码、然后陆续添加 Java 代码和 C++ 版本的代码。Java 是我的编程入门语言,Python 是学习人工智能以后学习的语言,C++ 就只是在刷题的时候用,因为有 Java 的基础,边写边学。

  • 所有的代码都是通过 LeetCode(中文版) 在线测评系统检测的,至少是正确的代码,但本人水平有限,所在代码仅供参考,欢迎您与我交流。

  • 建议您安装 Octotree 插件,以获得最佳的阅读体验。

Octotree 插件

编码依据

在代码编写的过程中,我比较注意的地方有:

1、格式良好

2、遵循代码规范

我遵守的代码规范和使用的工具如下:

编程语言 代码规范 工具
Java 阿里巴巴 Java 开发手册 Alibaba Java Coding Guidelines
Python PEP 8 -- Style Guide for Python Code autopep8black
C++ Google Style GuidesGoogle 开源项目风格指南 (中文版)

个人建议:

(1)编码规范的遵守依照“就近原则”,如果程序员所处团队指定了编码规范,则团队内部代码规范优先;

(2)遵守格式良好和编码规范是一件很繁琐的事情,我们可以借助工具帮助我们完成,在 IDE 中安装上述插件,这些插件会对编码不规范的地方进行提示,并给出修改建议,能够帮助程序员养成良好的编码习惯。

3、使用集成开发环境

使用 jetbrains 公司开发的 IDE 工具。主要是为了使用代码格式化和扫描编码规范的插件

  • Java:Intellij Idea(Ultimate)
  • Python:PyCharm(Ultimate)
  • C++:CLion、Visual Studio Code(开源)

学习资源

我个人学习的资源如下,仅供大家参考

1、书本

  • 《算法 4》:一本颜值很高的书,使用 Java 编写,示例清楚,配图优雅。很适合新手学习。缺点是:翻译欠缺,有些代码是封装过的,阅读起来让人摸不着头脑,给出的示例代码不规范。

  • 《算法导论》:当做工具书学习,其中的“动态规划”、“贪心算法”、“计数排序”、“基数排序”、“循环不变量”、“KMP”算法是讲解很细致的。缺点就是过于学术,不太适合算法和数据结构的入门教程。

2、网课与自媒体

  • 某课网 liuyubobobo 老师的算法与数据结构系列课程。我本人就是学习刘老师的课程入坑算法与数据结构的。(刘老师的课程是精心准备过,且是收费的,请大家自行判断是否需要购买。)
  • 可以在哔哩哩哔和 youtub 上搜索一些优秀的自媒体,听他们讲题也是很不错的学习途径,我常收看的自媒体有:花花酱,程序员刀刀,一俩三四五、lee215215、胡小旭-_-、喂你脚下有坑、代码会说话等。

3、优秀的博客、公众号

  • 在 2018 年,有一个制作算法动画的项目和公众号火了起来,让人耳目一新。公众号的名字叫“五分钟学算法”,博主叫“程序员吴师兄”,我在这个公众号上学习了很多东西,我现在的博客模板也是在吴师兄原来用的模板基础上做了修改。“程序员吴师兄”在很多平台上都可以搜索到他,欢迎大家关注。

4、加入一个学习团队,找到一两个小伙伴,刷题不会孤单

刷题建议

没有什么很特别的建议,但本人的确是通过以下的方式学习的。(仅供参考,本人只是个初学者。)

1、先学习,有一些预备知识以后,再做题

有些算法题做不出来很正常,那是因为自己的知识储备还不够。所以要么看书、看视频学习,要么就把这个不会做的问题当做知识点进行学习。一开始抄代码我觉得都是可以的,抄完代码要删掉了以后,自己再写几遍。

实在想了很久还想不出来的问题,就看题解和别人的视频学习哈。

2、要多做几遍,尝试做总结和分类

一道题,特别是经典的问题,要尝试多做几遍,作总结。有些问题的思想是通用的,而且技巧也是相对固定的,需要不断练习巩固和体会。

3、尝试一题多解,不要忽视暴力解法

一题多解,有些时候就相当于做了几遍了。“暴力解法”通常是进阶解法的基础,由“暴力解法”开始分析缺点,然后改进和优化,去理解这道题的解法通常是很自然的。

4、尝试输出,分享出去

较多程序员(包括我本人)相对欠缺的能力是语言表达和书面表达。而输出就是一个比较好的锻炼自己的方式,写博客写题解可以帮助到别人,也可以帮助自己整理思路,还可以交朋友。

我写题解以后,有很多朋友给出提出了建议,指出了错误,让我受益匪浅。有一些朋友加了我微信和 QQ,我很高兴与它们交流,成为朋友。

5、参加竞赛,练手

前面的题目可能就像课后练习一样,你做不做它就在那里,就有那么多,还可以看答案,做起来没什么动力。想模拟面试和笔试的感觉,就可以参加竞赛哦。

我最近两个月开始参加「力扣」的周赛和双周赛。刚开始的时候,因为有一些事情脱不开身,就只是打了个卡,一道题都没做。现在基本上 2 道题到 3 道题还是可以做出来的。难题赛后会进行学习,做一个笔记。

参加竞赛是一个很不错的学习途径,培养自己独立思考的能力,还可以与他人互动。

希望我们程序员都能够通过自己的努力,实现自己的理想。

希望我们程序员不再是别人眼里的刻板印象,我们也是艺术家。

希望我们大家都能在自己的工作领域里有所成绩。很高兴和大家成为朋友。

「力扣」2020 年 4 月每日一题做题记录

日期 题目 难度 题解
4 月 1 日 1111. 有效括号的嵌套深度 中等 嵌套深度 = 完成括号匹配问题实际使用的栈的最大高度
4 月 2 日 289. 生命游戏 中等 「力扣」第 289 题:生命游戏(数组)
4 月 3 日 8. 字符串转换整数 (atoi) 中等 尽量不使用库函数、一次遍历(Java)
4 月 4 日 42. 接雨水 困难 暴力解法、优化、双指针、单调栈
4 月 5 日 460. LFU缓存 困难 哈希表 + 双向链表(Java)
(同类问题) 146. LRU缓存机制 中等 哈希表 + 双向链表(Java)
4 月 6 日 72. 编辑距离 困难 动态规划(Java)
4 月 7 日 面试题 01.07. 旋转矩阵 中等 CSDN
4 月 8 日 机器人的运动范围 中等 深度优先遍历、广度优先遍历
4 月 9 日 22. 括号生成 中等 回溯算法(深度优先遍历)+ 广度优先遍历 + 动态规划
4 月 10 日 151. 翻转字符串里的单词 中等 CSDN

我在「力扣」圈子里回答的问题

刷题刷到绝望该怎么办?

大家使用什么样的刷题策略?

[在java和c#中Am-1]=A[m-- - 1];而在C中A[m-1]!=A[m-- - 1];

应届生选择大厂还是创业公司

小白来请教怎么学习算法

对于工作党来说,刷题的意义除了面试,还有什么?

如何写好题解?

大家都是如何刷 LeetCode 的?

题解分类(正在更新)

排序

「力扣」第 912 题:排序数组 的题解:复习基础排序算法(Java)总结了排序问题的一些要点和学习资料,可以从排序问题开始学习算法。

数组

数组的问题可以作为「新手场」,因为这些问题只需要掌握编程语言的基础知识就可以完成。

以下这些问题都是很容易想到思路的问题,即使没有学习过相关的数据结构和算法知识。

题目序号 题解 知识点 代码
26. 删除排序数组中的重复项(简单)
27. 移除元素(简单)
66. 加一(简单) 常规问题,纯粹考察编程基本功。
88. 合并两个有序数组 从后向前归并 常规操作,常考问题,注意这里从后向前归并。
189. 旋转数组 记住这个旋转三次的操作。
215. 数组中的第K个最大元素(中等) 很常见的问题,多次出现,一定要掌握。
451. 根据字符出现频率排序(中等) 和排序相关的经典问题,做法不唯一。
912. 排序数组(中等) 可以用于学习排序问题。

循环不变量

循环不变量用于证明算法的有效性,也是编码正确的理论依据。

循环不变量定义帮助分清先加还是先赋值,还有一些边界条件。定义清楚循环不变量以后,代码的编写就会很轻松。

建议把「循环不变量」作为注释写在代码里,以方便自己调试和他人阅读。

题目序号 题解 知识点 代码
26. 删除排序数组中的重复项(简单)
27. 移除元素(简单)
75. 颜色分类(中等) 快速排序 partition 过程(重点在设计循环不变量) 著名的「荷兰国旗」问题。
215. 数组中的第K个最大元素(简单) 通过 partition 减治 + 优先队列 常考的高频问题,一定要会做,重点掌握思想。
283. 移动零(简单) 掌握循环不变式,编写代码更加容易。

双指针

「双指针」问题其实来自于最朴素算法的优化,一下子排序掉很多不符合题意的解,「滑动窗口」技巧也是这样的。

题目序号 题解 知识点 代码
11. 盛最多水的容器(中等)
15. 三数之和(中等)
16. 最接近的三数之和(中等) 双指针对撞
42. 接雨水(困难) 暴力解法、以空间换时间、双指针、单调栈
167. 两数之和 II - 输入有序数组(简单) 双指针对撞 + 二分法

滑动窗口

题目序号 题解 知识点 代码
3. 无重复字符的最长子串(中等)
76. 最小覆盖子串(困难)
209. 长度最小的子数组(中等)
239. 滑动窗口最大值(中等)
424. 替换后的最长重复字符(中等)
567. 字符串的排列(中等)
643. 子数组最大平均数 I(简单)
978. 最长湍流子数组(中等)
992. K 个不同整数的子数组(困难)

链表

题目序号 题解 知识点
61. 旋转链表 穿针引线 穿针引线

下面的两题考察了「双向链表」的应用。

题目 难度 题解
460. LFU缓存 困难 哈希表 + 双向链表(Java)
146. LRU缓存机制 中等 哈希表 + 双向链表(Java)

二分查找

知识点讲解:用“排除法”(减治思想)写二分查找问题、与其它二分查找模板的比较哔哩哔哩

题目序号 题解 知识点 代码
704. 二分查找
34. 在排序数组中查找元素的第一个和最后一个位置 「力扣」题解CSDN哔哩哔哩 二分查找找边界。
33. 搜索旋转排序数组 二分法
81. 搜索旋转排序数组 II 二分查找
153. 寻找旋转排序数组中的最小值 二分查找 + 分治法
154. 寻找旋转排序数组中的最小值 II 二分查找 + 分治法
35. 搜索插入位置 十分好用的二分查找法模板哔哩哔哩
69. x 的平方根 二分查找 + 牛顿法(Python 代码、Java 代码)
275. H指数 II 减而治之、二分查找
300. 最长上升子序列 动态规划 、贪心算法 + 二分
354. 俄罗斯套娃信封问题 贪心算法、二分查找(Python 代码、Java 代码)
374. 猜数字大小 借本题说一说取中位数的写法(Python 代码、Java 代码)
436. 寻找右区间 二分查找、二分搜索树
410. 分割数组的最大值
875. 爱吃香蕉的珂珂 二分查找定位速度(C++、Java、Python)
1095. 山脉数组中查找目标值 十分好用的二分查找法模板(Python 代码、Java 代码)
1237. 找出给定方程的正整数解
1283. 使结果不超过阈值的最小除数 二分查找定位除数
1292. 元素和小于等于阈值的正方形的最大边长
1300. 转变数组后最接近目标值的数组和 二分查找
287. 寻找重复数 使用二分法在候选区间里定位目标数值(C++、Java、Python) 使用二分法定位一个有范围的整数。
4. 寻找两个有序数组的中位数 二分查找定位短数组的“边界线” 二分查找里最难的问题,主要弄清楚:1、为什么是在短数组里找边界;2、边界条件的判断。

题目序号 题解 知识点 代码
20. 有效的括号(简单)
71. 简化路径(中等)
155. 最小栈(简单)
225. 用队列实现栈(简单) 负负得正,peek 和 pop 时,依次将队首元素出队,放到队尾
232. 用栈实现队列(简单)
284. 顶端迭代器(中等)
316. 去除重复字母(困难) 栈 + 哨兵技巧(Java、C++、Python) 穿针引线
341. 扁平化嵌套列表迭代器(中等)
946. 验证栈序列(中等)
1111. 有效括号的嵌套深度(中等) 嵌套深度 = 完成括号匹配问题实际使用的栈的最大高度

单调栈

序号 题目 题解
1 739. 每日温度(中等) 【程序员的自我修养】739. Daily Temperatures(我看这篇题解学会的)、暴力解法 + 单调栈
2 496. 下一个更大元素 I(简单) 暴力解法、单调栈
3 503. 下一个更大元素 II(中等) (我暂时没有写)
4 901. 股票价格跨度(中等) LeetCode 第 901 题:股票价格跨度(单调栈)
5 84. 柱状图中最大的矩形(困难) 暴力解法、栈(哨兵技巧)
6 42. 接雨水(困难) 暴力解法、栈(哨兵技巧)

队列

题目序号 题解 知识点 代码
621. 任务调度器(中等)
622. 设计循环队列(中等)
641. 设计循环双端队列(中等)
1306. 跳跃游戏 III(中等)

优先队列

注意:了解「堆」作为「优先队列」的实现是有必要的,这样才会理解 removereplace 这些编码的细节,使用堆的时候才会更加有效。

题目序号 题解 知识点 代码
215. 数组中的第K个最大元素 通过 partition 减治 + 优先队列(Java、C++、Python) 减而治之、堆
295. 数据流的中位数(困难)
347. 前 K 个高频元素(中等)
703. 数据流中的第K大元素(简单)
973. 最接近原点的 K 个点(中等)
1296. 划分数组为连续数字的集合(中等)

(待添加)

哈希表

题目 难度 题解
49. 字母异位词分组 中等 自定义字符串的哈希规则,使用质数作为乘法因子(Java)

回溯算法

题型 1:基本回溯问题,在数组上进行搜索

题目序号 题解 知识点 代码
46. 全排列(中等) 从全排列问题开始理解“回溯搜索”算法
47. 全排列 II(中等) 回溯搜索 + 剪枝 理解深度优先遍历,发现剪枝条件。
39. 组合总和 回溯算法 + 剪枝 画树形图。
40. 组合总和 II 回溯算法 + 剪枝 画树形图。
78. 子集 回溯 + 位掩码 经典问题。
90. 子集 II 经典问题。
77. 组合 回溯算法 + 剪枝

题型 2:字符串上的回溯问题

重点理解:由于字符串每次都生成新字符,无须状态重置。

题目序号 题解 知识点 代码
17 .电话号码的字母组合 回溯搜索(无显式回溯)、广度优先遍历 字符串的回溯问题。
22. 括号生成 回溯算法(深度优先遍历)+ 广度优先遍历 字符串的回溯问题。
93. 复原IP地址 回溯算法(画图分析剪枝条件) 字符串的回溯问题。
784. 字母大小写全排列 在隐式树上做深度优先遍历 字符串的回溯问题。

题型 3:二维平面上的回溯问题

题目序号 题解 知识点 代码
79. 单词搜索(中等) 在二维平面上使用回溯法

题型 4:一些游戏问题

题目序号 题解 知识点 代码
51. N皇后 根据第 46 题“全排列”的“回溯算法”思路编写“N 皇后”问题 经典问题,掌握「空间换时间」技巧。
37. 解数独(困难)
36. 有效的数独(中等) 这里用到的是哈希表。

题型 5:巧用剪枝

题目序号 题解 知识点 代码
60. 第k个排列 深度优先遍历 + 剪枝、双链表模拟 可以基于第 46 题做,剪枝直接来到枝叶。

动态规划

一个「动态规划」问题的分类:https://zhuanlan.zhihu.com/p/126546914?utm_source=wechat_session&utm_medium=social&utm_oi=27134168924160。

知识点讲解:在「力扣」第 5 题题解

第 1 部分:「动态规划」基本问题

  • 递归 + 记忆化:记忆化递归(记忆化搜索),这是「自上而下」的思路;
  • 掌握「自底向上」递推求解问题的方法;
  • 理解「重复子问题」、「最优子结构」、「无后效性」;
  • 掌握「状态定义」、「状态转移方程」
题目序号 题解 知识点 代码
509. 斐波那契数(简单) 递归做一定要加缓存。
70. 爬楼梯(简单) CSDN 和斐波拉契数是同一道问题。

第 2 部分:最优子结构

题目序号 题解 知识点 代码
279. 完全平方数(中等)
322. 零钱兑换(中等) 动态规划、使用「完全背包」问题思路、图的广度优先遍历
343. 整数拆分(中等) “贪心选择”性质的简单证明、记忆化搜索、动态规划 (Python、Java)

第 3 部分:无后效性

题目序号 题解 知识点 代码
198. 打家劫舍(简单) 二维状态消除后效性
62. 不同路径(中等)
63. 不同路径 II(中等)

第 4 部分:经典问题(1)

题目序号 题解 知识点 代码
53. 最大子序和 动态规划、分治法CSDN 1、经典动态规划问题;2、分治
300. 最长上升子序列 动态规划 、贪心算法 + 二分
5. 最长回文子串 Manacher 算法 + 动态规划 (Java、C++、Python) 使用动态规划的方法得到子串的回文性质
72. 编辑距离 动态规划(Java)CDSN
120. 三角形最小路径和(中等)
10. 正则表达式匹配(困难)

第 5 部分:经典问题(2)背包问题

题目序号 题解 知识点 代码
416. 分割等和子集 动态规划(0-1 背包问题) 很重要的动态规划模型,必须掌握
518. 零钱兑换 II 动态规划(套用完全背包问题模型)
322. 零钱兑换(中等) 动态规划、使用「完全背包」问题思路、图的广度优先遍历
377. 组合总和 Ⅳ 动态规划
494. 目标和 0-1 背包问题
474. 一和零 动态规划(转换为 0-1 背包问题)

第 6 部分:经典问题(3)股票问题

题目序号 题解 知识点 代码
121. 买卖股票的最佳时机(简单) 暴力枚举 + 动态规划 + 差分思想CSDN
122. 买卖股票的最佳时机 II(简单) 暴力搜索 + 贪心算法 + 动态规划CSDN
123. 买卖股票的最佳时机 III(困难) 动态规划CSDN 1、从后向前写可以把状态压缩到一维;2、分解成两个 121 题。
188. 买卖股票的最佳时机 IV(困难) 动态规划
309. 最佳买卖股票时机含冷冻期(中等) 动态规划
714. 买卖股票的最佳时机含手续费(中等) 动态规划

贪心算法

题目序号 题解 知识点 代码
12. 整数转罗马数字(中等)
452. 用最少数量的箭引爆气球(中等)
455. 分发饼干(中等)
122. 买卖股票的最佳时机 II(简单)

并查集

题目序号 题解 知识点 代码
990. 等式方程的可满足性(中等)
547. 朋友圈(中等)
200. 岛屿数量(中等)
1319. 连通网络的操作次数(中等)
399. 除法求值(中等)
128. 最长连续序列(困难)
765. 情侣牵手(困难)
952. 按公因数计算最大组件大小(困难)

配套资源

说明:做了 PPT 或者动画的题目,一般在 LeetCode 中文版的题解区都能看到我写的题解。

刷题过程中形成的文章(待更新)

第 1 章 数组 代码文件夹
LeetCode 数组专题 1:二分查找 链接地址备用地址
LeetCode 数组专题 2:一些关于数组的问题 链接地址备用地址
LeetCode 数组专题 3:三路快排 partition 的应用 链接地址备用地址
LeetCode 数组专题 4:双索引技术之一:对撞指针 链接地址备用地址
LeetCode 数组专题 5:双索引技术之二:滑动窗口 链接地址备用地址
LeetCode 数组专题 6:其它数组问题 链接地址备用地址
第 2 章 查找表 代码文件夹
LeetCode 查找表专题 1:查找问题简介 链接地址备用地址
LeetCode 查找表专题 2:哈希表的使用 链接地址备用地址
LeetCode 查找表专题 3:set 和 map 不同底层实现的区别 链接地址备用地址
LeetCode 查找表专题 4:使用查找表的经典问题:Two Sum 链接地址备用地址
LeetCode 查找表专题 5:灵活选择键值:4Sum II 链接地址备用地址
LeetCode 查找表专题 6:灵活选择键值:Number of Boomerangs 链接地址备用地址
LeetCode 查找表专题 7:查找表和滑动窗口 链接地址备用地址
LeetCode 查找表专题 8:使用树结构 链接地址备用地址
第 3 章 单链表 代码文件夹
LeetCode 链表专题 1:在链表中穿针引线 链接地址备用地址
LeetCode 链表专题 2:测试你的链表程序 链接地址备用地址
LeetCode 链表专题 3:设立链表的虚拟头结点 链接地址备用地址
LeetCode 链表专题 4:复杂的穿针引线 链接地址备用地址
LeetCode 链表专题 5:不仅仅是穿针引线 链接地址备用地址
LeetCode 链表专题 6:链表与双指针 链接地址备用地址
第 4 章 栈、队列、优先队列 代码文件夹
LeetCode 栈、队列、优先队列专题 1:栈和队列的使用 链接地址
LeetCode 栈、队列、优先队列专题 2:二叉树的三种非递归实现 链接地址
LeetCode 栈、队列、优先队列专题 3:使用自己编写的模拟系统栈,写出非递归的程序 链接地址
LeetCode 栈、队列、优先队列专题 4:队列 Queue 与广度优先遍历 链接地址
LeetCode 栈、队列、优先队列专题 5:广度优先遍历和图的最短路径问题 链接地址
LeetCode 栈、队列、优先队列专题 6:优先队列也是队列 链接地址
第 5 章 二叉树和递归 代码文件夹
LeetCode 二叉树和递归专题 1:从二叉树的角度看递归 链接地址
LeetCode 二叉树和递归专题 2:一个简单的二叉树引发的血案 链接地址
LeetCode 二叉树和递归专题 3:注意递归的终止条件 链接地址
LeetCode 二叉树和递归专题 4:如何使用递归函数的返回值 链接地址
LeetCode 二叉树和递归专题 5:稍复杂的递归逻辑 Path Sum III 链接地址
LeetCode 二叉树和递归专题 6:二分搜索树中的问题 链接地址
第 6 章 回溯问题 代码文件夹
LeetCode 回溯专题 1:在树形问题中使用递归 链接地址
LeetCode 回溯专题 2:回溯法是暴力解法的一个主要的实现手段 链接地址
LeetCode 回溯专题 3:排列问题 Permutations 链接地址
LeetCode 回溯专题 4:组合问题 Combinations 链接地址
LeetCode 回溯专题 5:回溯法解决组合问题的优化 链接地址
LeetCode 回溯专题 6:二维平面上使用回溯法 链接地址
LeetCode 回溯专题 7:floodfill 解决一类经典问题 链接地址
LeetCode 回溯专题 8:回溯法是经典的人工智能的基础 链接地址
第 7 章 动态规划问题 代码文件夹
LeetCode 动态规划专题 1:“重叠子问题”和“记忆化搜索” 链接地址
LeetCode 动态规划专题 2:第 1 个动态规划问题的 3 种实现 链接地址
LeetCode 动态规划专题 3:第 2 个动态规划问题:整数分割 链接地址
LeetCode 动态规划专题 4:状态和状态转移方程 链接地址
LeetCode 动态规划专题 5:0-1 背包问题 链接地址
LeetCode 动态规划专题 6:0-1 背包问题在空间复杂度上的两个优化 链接地址
LeetCode 动态规划专题 7:面试中的 0-1 背包问题 链接地址
LeetCode 动态规划专题 8:最长上升子序列问题 链接地址
第 8 章 贪心算法 代码文件夹
LeetCode 专题:贪心算法 链接地址
第 9 章 拓扑排序 代码文件夹
LeetCode 专题:拓扑排序 链接地址
第 10 章 字典树 代码文件夹
【算法日积月累】20-高级数据结构:字典树 链接地址
第 11 章 并查集 代码文件夹
【算法日积月累】17-高级数据结构:并查集 链接地址
第 12 章 位运算 代码文件夹
LeetCode 专题:位运算 链接地址
第 13 章 树状数组 代码文件夹
【算法日积月累】19-高级数据结构:树状数组 链接地址
第 14 章 分治算法 代码文件夹
[整理中]
第 15 章 二分查找 代码文件夹
LeetCode 专题:二分查找 链接地址
第 16 章 线段树 代码文件夹
【算法日积月累】18-高级数据结构:线段树 链接地址
第 17 章 数学问题 代码文件夹
[整理中]
第 18 章 优先队列 代码文件夹
[整理中]
第 19 章 字符串 代码文件夹
[整理中]

About

我的 LeetCode 做题记录,正在加紧练习中。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 75.2%
  • Python 20.6%
  • C++ 4.2%