^-^
Web开发者|阅读写作爱好者
系统性 leetcode 刷题记录
  1. 排序算法
  2. 贪心
  3. 双指针
  4. 二分查找
  5. 排序
  6. 搜索
  7. 动态规划
  8. 数学问题
  9. 位运算
  10. 数据结构
  11. 字符串
  12. 链表

主要记录自己使用Java语言系统性刷过的算法题。

源于一份pdf刷题书,需要该pdf可在我的github仓库下载,须知书里采用的是c++语法。

分模块刷题的收获更深刻,先在此感谢该pdf的作者。

排序算法

Title 平均时间复杂度 空间复杂度
BubbleSort O(n^2) O(1)
InsertionSort O(n^2) O(1)
SelectionSort O(n^2) O(1)
MergeSort O(nlogn) O(n)
QuickSort O(nlogn) O(nlogn)

贪心

Title Solution Difficulty flag
455. 分发饼干 FourFiveFive455.java 简单
606. 根据二叉树创建字符串 SixZeroSix606.java 简单
452. 用最少数量的箭引爆气球 FourFiveTwo452.java 中等
436. 寻找右区间 FourThreeSix436.java 中等
406. 根据身高重建队列 FourZeroSix406.java 中等
122. 买卖股票的最佳时机 II OneTwoTwo122.java 中等
763. 划分字母区间 SevenSixThree763.java 中等
665. 非递减数列 SixSixFive665.java 中等
135. 分发糖果 OneThreeFive135.java 困难

双指针

Title Solution Difficulty flag
88. 合并两个有序数组 EightEight88.java 简单
680. 验证回文串 II SixEightZero680.java 简单
524. 通过删除字母匹配到字典里最 FiveTwoFour524.java 中等
142. 环形链表 II OneFourTwo142.java 中等
167. 两数之和 II - 输入有序数组 OneSisSeven167.java 中等
633. 平方数之和 SixThreeThree633.java 中等
76. 最小覆盖子串 SevenSix76.java 困难

二分查找

Title Solution Difficulty flag
69. x 的平方根 SixNine69.java 简单
81. 搜索旋转排序数组 II EightOne81.java 中等
540. 有序数组中的单一元 FiveFourZero540.java 中等
34. 在排序数组中查找元素的第一个和最后一个位置 ThreeFour34.java 中等
154. 寻找旋转排序数组中的最小值 II OneFiveFoue154.java 困难
4.寻找两个正序数组的中位数 Four4.java 困难

排序

Title Solution Difficulty flag
451. 根据字符出现频率排 FoutFiveOne451.java 中等
75. 颜色分类 SevenFive75.java 中等
347. 前 K 个高频元素 ThreeFourSeven347.java 中等
215. 数组中的第K个最大元 TwoOneFIve215.java 中等

搜索

Title Solution Difficulty flag
257. 二叉树的所有路径 TwoFiveSeven257.java 简单
547. 省份数量 FiveFourSeven547.java 中等
417. 太平洋大西洋水流 FourOneSeven417.java 中等
47. 全排列 II FourSeven47.java 中等
46. 全排列 FourSix46.java 中等
40. 组合总和 II FourZero40.java 中等
934. 最短的桥 MyNineThreeFour934.java 中等
934. 最短的桥 NineThreeFour934.java 中等
130. 被围绕的区域 OneThreeZero130.java 中等
79. 单词搜索 SevenNine79.java 中等
77. 组合 SevenSeven77.java 中等
695. 岛屿的最大面积 SixNineFive695ByRecursion.java 中等
695. 岛屿的最大面积 SixNineFive695ByStack.java 中等

动态规划

Title Solution Difficulty flag
70. 爬楼梯 SevenZero70.java 简单
542. 01 矩阵 FiveFourTwo542.java 中等
413. 等差数列划分 FourOneThreee413.java 中等
91. 解码方法 NineOne91.java 中等
198. 打家劫舍 OneNineEight198.java 中等
64. 最小路径和 SixFour64.java 中等
279. 完全平方数 TwoSevenNine279.java 中等
221. 最大正方形 TwoTwoOne221.java 中等

数学问题

Title Solution Difficulty flag
9. 回文数 Nine9.java 简单
326. 3 的幂 ThreeTwoSix326.java 简单
27. 移除元素 TwoSeven27.java 简单

位运算

Title Solution Difficulty flag
461. 汉明距离 FourSixOne461.java 简单
190. 颠倒二进制位 OneNineZero190.java 简单
136. 只出现一次的数字 OneThreeSix136.java 简单
342. 4的幂 TheeFourTwo342.java 简单
268. 丢失的数字 TwoSixEight268.java 简单

数据结构

Title Solution Difficulty flag
448. 找到所有数组中消失 FourFourEight448.java 简单
1. 两数之和 One1.java 简单
217. 存在重复元素 TwoOneSeven217.java 简单
232. 用栈实现队列 TwoThreeTwo232.java 简单
225. 用队列实现栈 TwoTwoFive225.java 简单
20. 有效的括号 TwoZero20.java 简单
155. 最小栈 OneFiveFive155.java 中等

字符串

Title Solution Difficulty flag
242. 有效的字母异位词 TwoFourTwo242.java 简单

链表

Title Solution Difficulty flag
83. 删除排序链表中的重复 EightThree83.java 简单
234. 回文链表 TwoThreeFour234.java 简单
206. 反转链表 TwoZeroSix206.java 简单
160. 相交链表 OneSixZero160.java 简单
148. 排序链表 OneFourEight148.java 中等
19. 删除链表的倒数第 N 个 OneNine19.java 中等
328. 奇偶链表 ThreeTwoEight328.java 中等
2. 两数相加 Two2.java 中等
24. 两两交换链表中的节点 TwoFour24.java 中等

Title Solution Difficulty flag
897. 递增顺序搜索树 EightNineSeven897.java 简单
530. 二叉搜索树的最小绝对 FiveThreeZero530.java 简单
543. 二叉树的直径 FiveFourThree543.java 简单
94. 二叉树的中序遍历 NineFour94.java 简单
404. 左叶子之和 FourZeroFour404.java 简单
144. 二叉树的前序遍历 OneFourFour144.java 简单
110. 平衡二叉树 OneOneZero110.java 简单
104. 二叉树的最大深度 OneZeroFour104.java 简单
101. 对称二叉树 OneZeroOne101.java 简单
653. 两数之和 IV - 输入二 SixFiveThree653.java 简单
617. 合并二叉树 SixOneSeven617.java 简单
637. 二叉树的层平均值 SixThreeSeven637.java 简单
226. 翻转二叉树 TwoTwoSix226.java 简单
572. 另一棵树的子树 FiveSevenTwo572.java 简单
889. 根据前序和后序遍历构造二叉树 EightEightNine889.java 中等
513. 找树左下角的值 FiveOneThree513.java 中等
538. 把二叉搜索树转换为 FiveThreeEight538.java 中等
450. 删除二叉搜索树中的 FourFiveZero450.java 中等
437. 路径总和 III FourThreeSeven437.java 中等
1110. 删点成林 OneOneOneZero1110.java 中等
105. 从前序与中序遍历序 OneZeroFive105.java 中等
106. 从中序与后序遍历序 OneZeroSix106.java 中等
669. 修剪二叉搜索树 SixSixNine669.java 中等
235. 二叉搜索树的最近公共 TwoThreeFive235.java 中等
208. 实现 Trie (前缀树) TwoZeroEight208.java 中等
以上