本文相当于目录方便快速检索内容,没有实际内容,只做索引 |
---|
🏆:有此标记的题,表示为经典题,必须优先掌握。要保证看到的一瞬间,无需过脑就能知道如何操作(大概300道左右)。
文章目录
数学知识
排列组合相关 |
---|
卡特兰数,例如对于n个进栈元素,有多少种出栈顺序,就可以用卡特兰数来求,公式为 1 n + 1 C n m = 1 n + 1 A n m A m m \dfrac{1}{n+1}C_{n}^m =\dfrac{1}{n+1} \dfrac{A_{n}^m}{A_{m}^m} n+11Cnm=n+11AmmAnm,例如n = 3时,有 1 4 ∗ 6 ∗ 5 ∗ 4 3 ∗ 2 ∗ 1 = 5 \dfrac{1}{4}*\dfrac{6*5*4}{3*2*1} = 5 41∗3∗2∗16∗5∗4=5种出栈顺序
- A n m = A_{n}^m = Anm=从n开始从大往小,m个数相乘
- C n m = A n m A m m C_{n}^m = \dfrac{A_{n}^m}{A_{m}^m} Cnm=AmmAnm
- 例如 C 2 n n = A 2 n m A n n C_{2n}^n = \dfrac{A_{2n}^m}{A_{n}^n} C2nn=AnnA2nm
- 例如n = 3时, C 2 n n = C 6 3 = A 6 3 A 3 3 = 6 ∗ 5 ∗ 4 3 ∗ 2 ∗ 1 = 20 C_{2n}^n = C_{6}^3 = \dfrac{A_{6}^3}{A_{3}^3} = \dfrac{6*5*4}{3*2*1} = 20 C2nn=C63=A33A63=3∗2∗16∗5∗4=20
四平方和定理:相关题目LeetCode279. 完全平方数 |
---|
- 四平方和定理:任意正整数x,可被
最多4个
正整数的平方和(完全平方数)表示。- 结论一:当 n = 4 k ∗ ( 8 ∗ m + 7 ) n = 4^k * (8*m + 7) n=4k∗(8∗m+7)时,n只能被4个正整数的平方和表示。
这是一个判断条件,k和m表示随便一个数,只要n能满足即可。可以说只要 n 满足 4 k ∗ ( 8 ∗ m + 7 ) n 满足 4^k * (8*m + 7) n满足4k∗(8∗m+7)这样的条件,n就只能被4个正整数平方和表示
- 结论二:当前仅当 n ≠ 4 k ∗ ( 8 ∗ m + 7 ) n \not = 4^k * (8*m + 7) n=4k∗(8∗m+7)时,n才可以被3个及以下(至多3个)正整数平方和表示
常用API
数字处理相关 |
---|
- 转换字符串为Int类型
int a = Integer.parseInt("数字");//将字符串转换为int类型数字
Integer i = Integer.valueOf("123");//将字符串转换为Integer类型
- 转换字符为int型
char c = '1';
int a = c-'0';
int a = c-48;
- 进制转换
//十进制转其它进制
Integer.toString(要转换的十进制数,要转成几进制);
链表相关 |
---|
//将处理时速度更快的数组,转换为链表。
Integer[] records = new Integer[5];
List.of(records);//将records转为链表
大根堆,小根堆 |
---|
java优先级队列就是堆实现。默认是大根堆
- 小根堆实现方法
PriorityQueue<int[]> queue = new PriorityQueue<int[]>(new Comparator<int[]>() {//改为小根堆
public int compare(int[] m, int[] n) {//出现次数谁高,谁优先级就高,会最优先出堆
//n表示堆顶,m是新插入
//compare方法,如果返回值 >0 那么m放入n后面
//如果m更大,m就插入到n的下面,n继续是堆顶,从而实现小根堆
return m[1] - n[1];//优先级高的先出堆。也就是它们在堆的最下面,最优先出堆
}
});
PriorityQueue<Integer> queue = new PriorityQueue<Integer>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
});
- 大根堆实现方法
PriorityQueue<int[]> queue = new PriorityQueue<int[]>(new Comparator<int>() {//改为小根堆
public int compare(int[] m, int[] n) {//出现次数谁高,谁优先级就高,会最优先出堆
//n表示堆顶,m是新插入,如果返回值 < 0 m就作为新的堆顶,从而实现大根堆
//如果m更大,n - m必然小于0, 那么m成为新的堆顶
return n[1] - m[1];
}
});
一、数据结构与算法基础
1. 排序
快速排序https://blog.csdn.net/grd_java/article/details/135671368 |
---|
堆排序https://blog.csdn.net/grd_java/article/details/136937525 |
---|
2. 字符串
KMP算法https://blog.csdn.net/grd_java/article/details/136107363 |
---|
正则表达式https://blog.csdn.net/grd_java/article/details/136120841 |
---|
3. 位运算
位运算https://blog.csdn.net/grd_java/article/details/136119268 |
---|
4. 线性数据结构
数组原理https://blog.csdn.net/grd_java/article/details/123064835 |
---|
堆栈https://blog.csdn.net/grd_java/article/details/122379699 |
---|
队列https://blog.csdn.net/grd_java/article/details/122821039 |
---|
链表https://blog.csdn.net/grd_java/article/details/123071293 |
---|
5. 树
二叉排序树https://blog.csdn.net/grd_java/article/details/124091563 |
---|
平衡二叉树https://blog.csdn.net/grd_java/article/details/136473856 |
---|
🏆LeetCode208. 实现 Trie (前缀树)https://blog.csdn.net/grd_java/article/details/136530650 |
---|
二、基础题
基础题,也是必会题,入门题。以熟练思想,总结套路为主,对于这些类型的题一定要看到就有思路,而且要保证,遇到类似这些原题的题,能够几乎不过大脑,本能的写出来。熟练到像写排序算法一样。 |
---|
1. 基础算法思想
1.1 双指针
🏆LeetCode167:两数之和 II - 输入有序数组https://blog.csdn.net/grd_java/article/details/135189006 |
---|
🏆LeetCode633. 平方数之和https://blog.csdn.net/grd_java/article/details/135196417 |
---|
🏆LeetCode345. 反转字符串中的元音字母https://blog.csdn.net/grd_java/article/details/135215314 |
---|
🏆LeetCode680. 验证回文串 IIhttps://blog.csdn.net/grd_java/article/details/135218515 |
---|
🏆LeetCode88:合并两个有序数组https://blog.csdn.net/grd_java/article/details/123381676 |
---|
🏆LeetCode524. 通过删除字母匹配到字典里最长单词https://blog.csdn.net/grd_java/article/details/135276047 |
---|
1.2 动态规划
很多人觉得动态规划很难,但它就是固定套路而已。其实动态规划只不过是将多余的步骤,提前放到dp数组中(就是一个数组,只不过大家都叫它dp),达到空间换时间的效果。它仅仅只是一种优化思路,因此它目前的境地和线性代数一样----虚假的难。
- 想想线性代数,在国外留学的学生大多数不觉得线性代数难理解。但是中国的学生学习线性代数时,完全摸不着头脑,一上来就是行列式和矩阵,根本不知道这玩意是干嘛的。
- 线性代数从根本上是在空间上研究向量,抽象上研究线性关系的学科。人家国外的教科书都是第一讲就帮助大家理解研究向量和线性关系。
- 反观国内的教材,直接把行列式搞到第一章。搞的国内的学生在学习线性代数的时候,只会觉得一知半解,觉得麻烦,完全不知道这玩意学来干什么。当苦尽甘来终于理解线性代数时干什么的时候,发现人家国外的教材第一节就把这玩意讲清楚了。你只会大骂我们国内这些教材,什么狗东西(以上是自己学完线性代数后的吐槽,我们同学无一例外都这么觉得)。
而我想告诉你,动态规划和线性代数一样,我学完了才知道,它不过就是研究空间换时间,提前将固定的重复操作规划到dp数组中,而不用暴力求解,从而让效率极大提升。
- 但是网上教动态规划的兄弟们,你直接给一个动态方程是怎么回事?和线性代数,一上来就教行列式和矩阵一样,纯属恶心人。我差不多做了30多道动态规划题目,才理解,动态方程只是一个步骤而已,而这已经浪费我很长时间了,我每道题都一知半解不理解,过程及其痛苦。最后只能重新做。
- 动态规划,一定是优先考虑重复操作与dp数组之间的关系,搞清楚后,再提出动态方程。而你们前面步骤省略了不讲,一上来给个方程,不是纯属扯淡吗?
- 我推荐研究动态规划题目,按5个步骤,从上到下依次来分析
- DP数组及下标含义
- 递推公式
- dp数组初始化
- 数组遍历顺序(双重循环及以上时,才考虑)
- dp数组打印,分析思路是否正确(相当于做完题,检查一下)
🏆LeetCode509. 斐波那契数https://blog.csdn.net/grd_java/article/details/135337498 |
---|
🏆LeetCode70. 爬楼梯https://blog.csdn.net/grd_java/article/details/135354628 |
---|
🏆LeetCode746. 使用最小花费爬楼梯https://blog.csdn.net/grd_java/article/details/135372438 |
---|
🏆LeetCode198. 打家劫舍https://blog.csdn.net/grd_java/article/details/135401880 |
---|
🏆LeetCode213. 打家劫舍 IIhttps://blog.csdn.net/grd_java/article/details/135412111 |
---|
🏆LeetCode62. 不同路径https://blog.csdn.net/grd_java/article/details/135421514 |
---|
🏆LeetCode63. 不同路径 IIhttps://blog.csdn.net/grd_java/article/details/135423869 |
---|
🏆LeetCode64. 最小路径和https://blog.csdn.net/grd_java/article/details/135430626 |
---|
🏆LeetCode303. 区域和检索 - 数组不可变https://blog.csdn.net/grd_java/article/details/135438129 |
---|
🏆LeetCode343. 整数拆分(TODO)https://blog.csdn.net/grd_java/article/details/135474439 |
---|
🏆LeetCode96. 不同的二叉搜索树https://blog.csdn.net/grd_java/article/details/135616416 |
---|
🏆LeetCode337. 打家劫舍 III(此题为动态规划和二叉树综合考察)https://blog.csdn.net/grd_java/article/details/136455466 |
---|
🏆LeetCode131. 分割回文串(动态规划和回溯综合题)https://blog.csdn.net/grd_java/article/details/136623713 |
---|
🏆LeetCode376. 摆动序列(动态规划和贪心共有题)https://blog.csdn.net/grd_java/article/details/136723819 |
---|
🏆LeetCode53:最大子数组和(动态规划和贪心共有题)https://blog.csdn.net/grd_java/article/details/125500916 |
---|
🏆LeetCode122. 买卖股票的最佳时机 II(动态规划和贪心共有题)https://blog.csdn.net/grd_java/article/details/136746526 |
---|
🏆LeetCode134. 加油站(动态规划和贪心共有题)https://blog.csdn.net/grd_java/article/details/136771150 |
---|
1.3 回溯
🏆LeetCode77. 组合https://blog.csdn.net/grd_java/article/details/136539120 |
---|
🏆LeetCode216. 组合总和 IIIhttps://blog.csdn.net/grd_java/article/details/136566739 |
---|
🏆LeetCode17. 电话号码的字母组合https://blog.csdn.net/grd_java/article/details/136570786 |
---|
🏆LeetCode39. 组合总和https://blog.csdn.net/grd_java/article/details/136583880 |
---|
🏆LeetCode40. 组合总和 IIhttps://blog.csdn.net/grd_java/article/details/136591510 |
---|
🏆LeetCode131. 分割回文串(动态规划和回溯综合题)https://blog.csdn.net/grd_java/article/details/136623713 |
---|
🏆LeetCode93. 复原 IP 地址https://blog.csdn.net/grd_java/article/details/136645069 |
---|
🏆LeetCode78. 子集https://blog.csdn.net/grd_java/article/details/136646871 |
---|
🏆LeetCode90. 子集 IIhttps://blog.csdn.net/grd_java/article/details/136670669 |
---|
🏆LeetCode491. 非递减子序列https://blog.csdn.net/grd_java/article/details/136675619 |
---|
🏆LeetCode46. 全排列https://blog.csdn.net/grd_java/article/details/136683863 |
---|
🏆LeetCode47. 全排列 IIhttps://blog.csdn.net/grd_java/article/details/136689218 |
---|
🏆LeetCode51. N 皇后https://blog.csdn.net/grd_java/article/details/136721298 |
---|
1.4 贪心
🏆LeetCode455. 分发饼干https://blog.csdn.net/grd_java/article/details/136722471 |
---|
🏆LeetCode605. 种花问题https://blog.csdn.net/grd_java/article/details/137017490 |
---|
🏆LeetCode435. 无重叠区间https://blog.csdn.net/grd_java/article/details/136991398 |
---|
🏆LeetCode452. 用最少数量的箭引爆气球https://blog.csdn.net/grd_java/article/details/136996588 |
---|
🏆LeetCode392. 判断子序列https://blog.csdn.net/grd_java/article/details/137019669 |
---|
🏆LeetCode860. 柠檬水找零https://blog.csdn.net/grd_java/article/details/136789989 |
---|
🏆LeetCode376. 摆动序列(动态规划和贪心共有题)https://blog.csdn.net/grd_java/article/details/136723819 |
---|
🏆LeetCode53:最大子数组和(动态规划和贪心共有题)https://blog.csdn.net/grd_java/article/details/125500916 |
---|
🏆LeetCode121:买卖股票的最佳时机https://blog.csdn.net/grd_java/article/details/125535740 |
---|
🏆LeetCode122. 买卖股票的最佳时机 II(动态规划和贪心共有题)https://blog.csdn.net/grd_java/article/details/136746526 |
---|
🏆LeetCode665. 非递减数列https://blog.csdn.net/grd_java/article/details/137025815 |
---|
🏆LeetCode55. 跳跃游戏https://blog.csdn.net/grd_java/article/details/136750344 |
---|
🏆LeetCode763. 划分字母区间https://blog.csdn.net/grd_java/article/details/137026382 |
---|
🏆LeetCode1005. K 次取反后最大化的数组和(这就不是简单题)https://blog.csdn.net/grd_java/article/details/136765577 |
---|
🏆LeetCode134. 加油站(动态规划和贪心共有题)https://blog.csdn.net/grd_java/article/details/136771150 |
---|
🏆LeetCode135. 分发糖果https://blog.csdn.net/grd_java/article/details/136786284 |
---|
🏆LeetCode406. 根据身高重建队列https://blog.csdn.net/grd_java/article/details/136848781 |
---|
1.5 排序
🏆LeetCode215. 数组中的第K个最大元素https://blog.csdn.net/grd_java/article/details/136932454 |
---|
🏆LeetCode451. 根据字符出现频率排序https://blog.csdn.net/grd_java/article/details/136983196 |
---|
🏆LeetCode75. 颜色分类https://blog.csdn.net/grd_java/article/details/136984691 |
---|
1.6 二分查找
🏆LeetCode278. 第一个错误的版本https://blog.csdn.net/grd_java/article/details/137050361 |
---|
🏆LeetCode153. 寻找旋转排序数组中的最小值https://blog.csdn.net/grd_java/article/details/137051307 |
---|
🏆LeetCode69:x 的平方根(二分查找和数学共有题)https://blog.csdn.net/grd_java/article/details/125511772 |
---|
🏆LeetCode744. 寻找比目标字母大的最小字母https://blog.csdn.net/grd_java/article/details/137043015 |
---|
🏆LeetCode540. 有序数组中的单一元素https://blog.csdn.net/grd_java/article/details/137045598 |
---|
🏆LeetCode34. 在排序数组中查找元素的第一个和最后一个位置https://blog.csdn.net/grd_java/article/details/137052688 |
---|
1.7 分治
🏆LeetCode241. 为运算表达式设计优先级https://blog.csdn.net/grd_java/article/details/137080386 |
---|
🏆LeetCode95. 不同的二叉搜索树 IIhttps://blog.csdn.net/grd_java/article/details/137084792 |
---|
1.8 搜索(BFS和DFS)
🏆LeetCode1091. 二进制矩阵中的最短路径https://blog.csdn.net/grd_java/article/details/137090602 |
---|
🏆LeetCode279. 完全平方数(动态规划与数学)https://blog.csdn.net/grd_java/article/details/137139578 |
---|
🏆LeetCode127. 单词接龙https://blog.csdn.net/grd_java/article/details/137152753 |
---|
🏆LeetCode695. 岛屿的最大面积https://blog.csdn.net/grd_java/article/details/137177470 |
---|
🏆LeetCode200. 岛屿数量https://blog.csdn.net/grd_java/article/details/137184401 |
---|
🏆LeetCode547. 省份数量https://blog.csdn.net/grd_java/article/details/137196175 |
---|
🏆LeetCode130. 被围绕的区域https://blog.csdn.net/grd_java/article/details/137203512 |
---|
🏆LeetCode417. 太平洋大西洋水流问题https://blog.csdn.net/grd_java/article/details/137205062 |
---|
🏆LeetCode79. 单词搜索(需要掌握回溯算法)https://blog.csdn.net/grd_java/article/details/137210565 |
---|
1.9 数学
🏆LeetCode204. 计数质数https://blog.csdn.net/grd_java/article/details/137241748 |
---|
🏆LeetCode504. 七进制数https://blog.csdn.net/grd_java/article/details/137261543 |
---|
🏆LeetCode405. 数字转换为十六进制数https://blog.csdn.net/grd_java/article/details/137277245 |
---|
🏆LeetCodeLeetCode168:Excel表列名称https://blog.csdn.net/grd_java/article/details/125648566 |
---|
🏆LeetCode172. 阶乘后的零https://blog.csdn.net/grd_java/article/details/137289887 |
---|
🏆LeetCode67:二进制求和https://blog.csdn.net/grd_java/article/details/125503132 |
---|
🏆LeetCode415. 字符串相加https://blog.csdn.net/grd_java/article/details/137335071 |
---|
🏆LeetCode462. 最小操作次数使数组元素相等 IIhttps://blog.csdn.net/grd_java/article/details/137352045 |
---|
🏆LeetCode169:多数元素https://blog.csdn.net/grd_java/article/details/125672001 |
---|
🏆LeetCode69:x 的平方根(二分查找和数学共有题)https://blog.csdn.net/grd_java/article/details/125511772 |
---|
🏆LeetCode367. 有效的完全平方数https://blog.csdn.net/grd_java/article/details/137369432 |
---|
🏆LeetCode326. 3 的幂https://blog.csdn.net/grd_java/article/details/137380628 |
---|
🏆LeetCode238. 除自身以外数组的乘积https://blog.csdn.net/grd_java/article/details/137383282 |
---|
🏆LeetCode628. 三个数的最大乘积https://blog.csdn.net/grd_java/article/details/137384088 |
---|
1.10 位运算
🏆LeetCode461. 汉明距离https://blog.csdn.net/grd_java/article/details/137608654 |
---|
🏆LeetCode136:只出现一次的数字(位运算异或)https://blog.csdn.net/grd_java/article/details/125652074 |
---|
🏆LeetCode268. 丢失的数字https://blog.csdn.net/grd_java/article/details/137610917 |
---|
🏆LeetCode260. 只出现一次的数字 IIIhttps://blog.csdn.net/grd_java/article/details/137612898 |
---|
🏆LeetCode190:颠倒二进制位https://blog.csdn.net/grd_java/article/details/125741219 |
---|
🏆LeetCode231:2 的幂(位运算,2的幂满足(n & -n) == n; (n & (n-1)) == 0;)https://blog.csdn.net/grd_java/article/details/125972618 |
---|
🏆LeetCode342. 4的幂https://blog.csdn.net/grd_java/article/details/137631396 |
---|
🏆LeetCode693. 交替位二进制数https://blog.csdn.net/grd_java/article/details/137638231 |
---|
🏆LeetCode476. 数字的补数https://blog.csdn.net/grd_java/article/details/137646003 |
---|
🏆LeetCode1009. 十进制整数的反码https://blog.csdn.net/grd_java/article/details/137648125 |
---|
🏆LeetCode371. 两整数之和https://blog.csdn.net/grd_java/article/details/137651114 |
---|
🏆LeetCode318. 最大单词长度乘积https://blog.csdn.net/grd_java/article/details/137655743 |
---|
🏆LeetCode338. 比特位计数https://blog.csdn.net/grd_java/article/details/137656431 |
---|
2. 数据结构相关
2.1 数组
🏆LeetCode977. 有序数组的平方https://blog.csdn.net/grd_java/article/details/135668254 |
---|
🏆LeetCode209. 长度最小的子数组https://blog.csdn.net/grd_java/article/details/135705382 |
---|
🏆LeetCode59. 螺旋矩阵 IIhttps://blog.csdn.net/grd_java/article/details/135709026 |
---|
🏆LeetCode283. 移动零https://blog.csdn.net/grd_java/article/details/135713563 |
---|
🏆LeetCode566. 重塑矩阵https://blog.csdn.net/grd_java/article/details/135714088 |
---|
🏆LeetCode485. 最大连续 1 的个数https://blog.csdn.net/grd_java/article/details/135726623 |
---|
🏆LeetCode240. 搜索二维矩阵 IIhttps://blog.csdn.net/grd_java/article/details/135727470 |
---|
🏆LeetCode378. 有序矩阵中第 K 小的元素https://blog.csdn.net/grd_java/article/details/135754017 |
---|
🏆LeetCode645. 错误的集合(位运算解法需要重点掌握)https://blog.csdn.net/grd_java/article/details/135757934 |
---|
🏆LeetCode287. 寻找重复数https://blog.csdn.net/grd_java/article/details/135767901 |
---|
🏆LeetCode667. 优美的排列 IIhttps://blog.csdn.net/grd_java/article/details/135769197 |
---|
🏆LeetCode697. 数组的度https://blog.csdn.net/grd_java/article/details/135815466 |
---|
🏆LeetCode766. 托普利茨矩阵https://blog.csdn.net/grd_java/article/details/135818132 |
---|
🏆LeetCode565. 数组嵌套https://blog.csdn.net/grd_java/article/details/135837966 |
---|
🏆LeetCode769. 最多能完成排序的块https://blog.csdn.net/grd_java/article/details/135845819 |
---|
2.2 链表
🏆LeetCode21. 合并两个有序链表https://blog.csdn.net/grd_java/article/details/123726827 |
---|
🏆LeetCode24. 两两交换链表中的节点https://blog.csdn.net/grd_java/article/details/135851392 |
---|
🏆LeetCode19. 删除链表的倒数第 N 个结点https://blog.csdn.net/grd_java/article/details/135863455 |
---|
🏆LeetCode83:删除排序链表中的重复元素https://blog.csdn.net/grd_java/article/details/123842027 |
---|
🏆LeetCode142:环形链表IIhttps://blog.csdn.net/grd_java/article/details/123843736 |
---|
🏆LeetCode160:相交链表https://blog.csdn.net/grd_java/article/details/123846514 |
---|
🏆LeetCode206:反转链表https://blog.csdn.net/grd_java/article/details/123850411 |
---|
🏆LeetCode234:回文链表https://blog.csdn.net/grd_java/article/details/123994522 |
---|
🏆LeetCode445. 两数相加 IIhttps://blog.csdn.net/grd_java/article/details/135867000 |
---|
🏆LeetCode725. 分隔链表https://blog.csdn.net/grd_java/article/details/135879252 |
---|
🏆LeetCode328. 奇偶链表https://blog.csdn.net/grd_java/article/details/135892776 |
---|
2.3 哈希表
🏆LeetCode1:两数之和https://blog.csdn.net/grd_java/article/details/123380577 |
---|
🏆LeetCode15. 三数之和https://blog.csdn.net/grd_java/article/details/136010556 |
---|
🏆LeetCode18. 四数之和https://blog.csdn.net/grd_java/article/details/136100065 |
---|
🏆LeetCode128. 最长连续序列https://blog.csdn.net/grd_java/article/details/136101701 |
---|
LeetCode217:存在重复元素https://blog.csdn.net/grd_java/article/details/125909196 |
---|
🏆LeetCode242. 有效的字母异位词https://blog.csdn.net/grd_java/article/details/135893267 |
---|
🏆LeetCode349. 两个数组的交集https://blog.csdn.net/grd_java/article/details/135907198 |
---|
🏆LeetCode454. 四数相加 IIhttps://blog.csdn.net/grd_java/article/details/135915916 |
---|
🏆LeetCode594. 最长和谐子序列https://blog.csdn.net/grd_java/article/details/136101335 |
---|
2.4 字符串
🏆LeetCode5:最长回文子串https://blog.csdn.net/grd_java/article/details/124666706 |
---|
🏆LeetCode9:回文数 https://blog.csdn.net/grd_java/article/details/125370879 |
---|
🏆LeetCode28. 找出字符串中第一个匹配项的下标https://blog.csdn.net/grd_java/article/details/125491363 |
---|
🏆LeetCode151. 反转字符串中的单词https://blog.csdn.net/grd_java/article/details/136105903 |
---|
🏆LeetCode205:同构字符串https://blog.csdn.net/grd_java/article/details/125782797 |
---|
🏆LeetCode344. 反转字符串https://blog.csdn.net/grd_java/article/details/136105388 |
---|
🏆LeetCode409. 最长回文串https://blog.csdn.net/grd_java/article/details/136112041 |
---|
🏆LeetCode459. 重复的子字符串https://blog.csdn.net/grd_java/article/details/136111766 |
---|
🏆LeetCode541. 反转字符串 IIhttps://blog.csdn.net/grd_java/article/details/136105667 |
---|
🏆LeetCode647. 回文子串https://blog.csdn.net/grd_java/article/details/136114700 |
---|
🏆LeetCode696. 计数二进制子串https://blog.csdn.net/grd_java/article/details/136119555 |
---|
2.5 栈与队列
🏆LeetCode20:有效的括号 https://blog.csdn.net/grd_java/article/details/125488801 |
---|
🏆LeetCode150. 逆波兰表达式求值https://blog.csdn.net/grd_java/article/details/136129589 |
---|
🏆LeetCode155. 最小栈https://blog.csdn.net/grd_java/article/details/136173451 |
---|
🏆LeetCode225:用队列实现栈https://blog.csdn.net/grd_java/article/details/125910269 |
---|
🏆LeetCode232:用栈实现队列https://blog.csdn.net/grd_java/article/details/124059318 |
---|
🏆LeetCode239. 滑动窗口最大值https://blog.csdn.net/grd_java/article/details/136135967 |
---|
🏆LeetCode347. 前 K 个高频元素https://blog.csdn.net/grd_java/article/details/136149228 |
---|
🏆LeetCode503. 下一个更大元素 IIhttps://blog.csdn.net/grd_java/article/details/136186675 |
---|
🏆LeetCode739. 每日温度https://blog.csdn.net/grd_java/article/details/136178082 |
---|
🏆LeetCode1047. 删除字符串中的所有相邻重复项https://blog.csdn.net/grd_java/article/details/136127101 |
---|
2.6 二叉树
🏆LeetCode94:二叉树的中序遍历https://blog.csdn.net/grd_java/article/details/124409026 |
---|
🏆LeetCode144. 二叉树的前序遍历https://blog.csdn.net/grd_java/article/details/136189205 |
---|
🏆LeetCode145:二叉树的后序遍历https://blog.csdn.net/grd_java/article/details/125672243 |
---|
🏆LeetCode102:二叉树的层序遍历https://blog.csdn.net/grd_java/article/details/136204918 |
---|
🏆LeetCode226:翻转二叉树https://blog.csdn.net/grd_java/article/details/125910020 |
---|
🏆LeetCode101:对称二叉树https://blog.csdn.net/grd_java/article/details/125527273 |
---|
🏆LeetCode104:二叉树的最大深度https://blog.csdn.net/grd_java/article/details/125528247 |
---|
🏆LeetCode111:二叉树的最小深度https://blog.csdn.net/grd_java/article/details/125531251 |
---|
🏆LeetCode222. 完全二叉树的节点个数https://blog.csdn.net/grd_java/article/details/136222387 |
---|
🏆LeetCode110:平衡二叉树https://blog.csdn.net/grd_java/article/details/125530702 |
---|
🏆LeetCode257. 二叉树的所有路径https://blog.csdn.net/grd_java/article/details/136244324 |
---|
🏆LeetCode404. 左叶子之和https://blog.csdn.net/grd_java/article/details/136244588 |
---|
🏆LeetCode513. 找树左下角的值https://blog.csdn.net/grd_java/article/details/136245244 |
---|
🏆LeetCode112:路径总和https://blog.csdn.net/grd_java/article/details/125533616 |
---|
🏆LeetCode106. 从中序与后序遍历序列构造二叉树https://blog.csdn.net/grd_java/article/details/136265197 |
---|
🏆LeetCode654. 最大二叉树https://blog.csdn.net/grd_java/article/details/136275450 |
---|
🏆LeetCode617. 合并二叉树https://blog.csdn.net/grd_java/article/details/136276346 |
---|
🏆LeetCode700. 二叉搜索树中的搜索https://blog.csdn.net/grd_java/article/details/136276456 |
---|
🏆LeetCode98. 验证二叉搜索树https://blog.csdn.net/grd_java/article/details/136277149 |
---|
🏆LeetCode530. 二叉搜索树的最小绝对差https://blog.csdn.net/grd_java/article/details/136288902 |
---|
🏆LeetCode501. 二叉搜索树中的众数https://blog.csdn.net/grd_java/article/details/136289347 |
---|
🏆LeetCode236. 二叉树的最近公共祖先https://blog.csdn.net/grd_java/article/details/136296518 |
---|
🏆LeetCode235:二叉搜索树的最近公共祖先https://blog.csdn.net/grd_java/article/details/125972778 |
---|
🏆LeetCode701. 二叉搜索树中的插入操作https://blog.csdn.net/grd_java/article/details/136300692 |
---|
🏆LeetCode450. 删除二叉搜索树中的节点https://blog.csdn.net/grd_java/article/details/136306114 |
---|
🏆LeetCode669. 修剪二叉搜索树https://blog.csdn.net/grd_java/article/details/136330961 |
---|
🏆LeetCode108:将有序数组转换为二叉搜索树https://blog.csdn.net/grd_java/article/details/125530336 |
---|
🏆LeetCode109. 有序链表转换二叉搜索树https://blog.csdn.net/grd_java/article/details/136479989 |
---|
🏆LeetCode538. 把二叉搜索树转换为累加树https://blog.csdn.net/grd_java/article/details/136331767 |
---|
🏆LeetCode543. 二叉树的直径https://blog.csdn.net/grd_java/article/details/136332143 |
---|
🏆LeetCode437. 路径总和 III(前缀和必须掌握)https://blog.csdn.net/grd_java/article/details/136390865 |
---|
🏆LeetCode572. 另一棵树的子树(经典题,树字符串化KMP)https://blog.csdn.net/grd_java/article/details/136403984 |
---|
🏆LeetCode687. 最长同值路径https://blog.csdn.net/grd_java/article/details/136447865 |
---|
🏆LeetCode337. 打家劫舍 III(此题为动态规划和二叉树综合考察)https://blog.csdn.net/grd_java/article/details/136455466 |
---|
🏆LeetCode671. 二叉树中第二小的节点https://blog.csdn.net/grd_java/article/details/136463146 |
---|
🏆LeetCode637. 二叉树的层平均值https://blog.csdn.net/grd_java/article/details/136463818 |
---|
🏆LeetCode230. 二叉搜索树中第K小的元素https://blog.csdn.net/grd_java/article/details/136472662 |
---|
🏆LeetCode653. 两数之和 IV - 输入二叉搜索树https://blog.csdn.net/grd_java/article/details/136486600 |
---|
🏆LeetCode208. 实现 Trie (前缀树)https://blog.csdn.net/grd_java/article/details/136530650 |
---|
🏆LeetCode677. 键值映射https://blog.csdn.net/grd_java/article/details/136531831 |
---|
2.7 图和并查集
🏆LeetCode785. 判断二分图https://blog.csdn.net/grd_java/article/details/137467811 |
---|
🏆LeetCode207. 课程表(拓扑排序)https://blog.csdn.net/grd_java/article/details/137561889 |
---|
🏆LeetCode210. 课程表 IIhttps://blog.csdn.net/grd_java/article/details/137583268 |
---|
🏆LeetCode684. 冗余连接(并查集)https://blog.csdn.net/grd_java/article/details/137606664 |
---|
三、LeetCode
1. 算法题
LeetCode1:两数之和https://blog.csdn.net/grd_java/article/details/123380577 |
---|
LeetCode2:两数相加https://blog.csdn.net/grd_java/article/details/124421686 |
---|
LeetCode3:无重复字符的最长子串https://blog.csdn.net/grd_java/article/details/124425165 |
---|
LeetCode4:寻找两个正序数组的中位数https://blog.csdn.net/grd_java/article/details/124449745 |
---|
LeetCode5:最长回文子串https://blog.csdn.net/grd_java/article/details/124666706 |
---|
LeetCode6:Z 字形变换https://blog.csdn.net/grd_java/article/details/124668101 |
---|
LeetCode7:整数反转https://blog.csdn.net/grd_java/article/details/124668948 |
---|
LeetCode8:字符串转换整数 (atoi)https://blog.csdn.net/grd_java/article/details/125370327 |
---|
LeetCode9:回文数 https://blog.csdn.net/grd_java/article/details/125370879 |
---|
LeetCode10:正则表达式匹配 https://blog.csdn.net/grd_java/article/details/125472198 |
---|
LeetCode11:盛最多水的容器 https://blog.csdn.net/grd_java/article/details/125472713 |
---|
LeetCode13:罗马数字转整数 https://blog.csdn.net/grd_java/article/details/125487063 |
---|
LeetCode14:最长公共前缀 https://blog.csdn.net/grd_java/article/details/125488765 |
---|
LeetCode20:有效的括号 https://blog.csdn.net/grd_java/article/details/125488801 |
---|
LeetCode26:删除有序数组中的重复项 https://blog.csdn.net/grd_java/article/details/125490478 |
---|
LeetCode27:移除元素https://blog.csdn.net/grd_java/article/details/125491338 |
---|
LeetCode28:实现 strStr()https://blog.csdn.net/grd_java/article/details/125491363 |
---|
LeetCode35:搜索插入位置https://blog.csdn.net/grd_java/article/details/125499608 |
---|
LeetCode53:最大子数组和https://blog.csdn.net/grd_java/article/details/125500916 |
---|
LeetCode58:最后一个单词的长度https://blog.csdn.net/grd_java/article/details/125529993 |
---|
LeetCode66:加一https://blog.csdn.net/grd_java/article/details/125501565 |
---|
LeetCode67:二进制求和https://blog.csdn.net/grd_java/article/details/125503132 |
---|
LeetCode69:x 的平方根https://blog.csdn.net/grd_java/article/details/125511772 |
---|
LeetCode70:爬楼梯https://blog.csdn.net/grd_java/article/details/123336452 |
---|
LeetCode83:删除排序链表中的重复元素https://blog.csdn.net/grd_java/article/details/123842027 |
---|
LeetCode88:合并两个有序数组https://blog.csdn.net/grd_java/article/details/123381676 |
---|
LeetCode94:二叉树的中序遍历https://blog.csdn.net/grd_java/article/details/124409026 |
---|
LeetCode100:相同的树https://blog.csdn.net/grd_java/article/details/125526163 |
---|
LeetCode101:对称二叉树https://blog.csdn.net/grd_java/article/details/125527273 |
---|
LeetCode104:二叉树的最大深度https://blog.csdn.net/grd_java/article/details/125528247 |
---|
LeetCode108:将有序数组转换为二叉搜索树https://blog.csdn.net/grd_java/article/details/125530336 |
---|
LeetCode110:平衡二叉树https://blog.csdn.net/grd_java/article/details/125530702 |
---|
LeetCode111:二叉树的最小深度https://blog.csdn.net/grd_java/article/details/125531251 |
---|
LeetCode112:路径总和https://blog.csdn.net/grd_java/article/details/125533616 |
---|
LeetCode118:杨辉三角https://blog.csdn.net/grd_java/article/details/125534471 |
---|
LeetCode119:杨辉三角 IIhttps://blog.csdn.net/grd_java/article/details/125534694 |
---|
LeetCode121:买卖股票的最佳时机https://blog.csdn.net/grd_java/article/details/125535740 |
---|
LeetCode125:验证回文串https://blog.csdn.net/grd_java/article/details/125652190 |
---|
LeetCode136:只出现一次的数字(位运算异或)https://blog.csdn.net/grd_java/article/details/125652074 |
---|
LeetCode141:环形链表https://blog.csdn.net/grd_java/article/details/123842935 |
---|
LeetCode142:环形链表IIhttps://blog.csdn.net/grd_java/article/details/123843736 |
---|
LeetCode145:二叉树的后序遍历https://blog.csdn.net/grd_java/article/details/125672243 |
---|
LeetCode160:相交链表https://blog.csdn.net/grd_java/article/details/123846514 |
---|
LeetCode168:Excel表列名称https://blog.csdn.net/grd_java/article/details/125648566 |
---|
LeetCode169:多数元素https://blog.csdn.net/grd_java/article/details/125672001 |
---|
LeetCode171:Excel 表列序号https://blog.csdn.net/grd_java/article/details/125725548 |
---|
LeetCode175:组合两个表https://blog.csdn.net/grd_java/article/details/125726134 |
---|
LeetCode181:超过经理收入的员工https://blog.csdn.net/grd_java/article/details/125740609 |
---|
LeetCode182:查找重复的电子邮箱https://blog.csdn.net/grd_java/article/details/125740712 |
---|
LeetCode183:从不订购的客户https://blog.csdn.net/grd_java/article/details/125740832 |
---|
LeetCode190:颠倒二进制位https://blog.csdn.net/grd_java/article/details/125741219 |
---|
LeetCode191:位1的个数(重点,位运算分治典型题)https://blog.csdn.net/grd_java/article/details/125761334 |
---|
LeetCode196:删除重复的电子邮箱https://blog.csdn.net/grd_java/article/details/125763902 |
---|
LeetCode197:上升的温度https://blog.csdn.net/grd_java/article/details/125776316 |
---|
LeetCode202:快乐数https://blog.csdn.net/grd_java/article/details/125780421 |
---|
LeetCode203:移除链表元素https://blog.csdn.net/grd_java/article/details/125780949 |
---|
LeetCode205:同构字符串https://blog.csdn.net/grd_java/article/details/125782797 |
---|
LeetCode206:反转链表https://blog.csdn.net/grd_java/article/details/123850411 |
---|
LeetCode217:存在重复元素https://blog.csdn.net/grd_java/article/details/125909196 |
---|
LeetCode219:存在重复元素 IIhttps://blog.csdn.net/grd_java/article/details/125909236 |
---|
LeetCode225:用队列实现栈https://blog.csdn.net/grd_java/article/details/125910269 |
---|
LeetCode226:翻转二叉树https://blog.csdn.net/grd_java/article/details/125910020 |
---|
LeetCode228:汇总区间https://blog.csdn.net/grd_java/article/details/125911074 |
---|
LeetCode231:2 的幂(位运算,2的幂满足(n & -n) == n; (n & (n-1)) == 0;)https://blog.csdn.net/grd_java/article/details/125972618 |
---|
LeetCode232:用栈实现队列https://blog.csdn.net/grd_java/article/details/124059318 |
---|
LeetCode234:回文链表https://blog.csdn.net/grd_java/article/details/123994522 |
---|
LeetCode235:二叉搜索树的最近公共祖先https://blog.csdn.net/grd_java/article/details/125972778 |
---|
LeetCode304:二维区域和检索 - 矩阵不可变https://blog.csdn.net/grd_java/article/details/125460190 |
---|
LeetCode394:字符串解码https://blog.csdn.net/grd_java/article/details/124398146 |
---|
LeetCode448:找到所有数组中消失的数字https://blog.csdn.net/grd_java/article/details/123721616 |
---|
LeetCode876:链表的中间结点https://blog.csdn.net/grd_java/article/details/124058409 |
---|
LeetCode1094:拼车https://blog.csdn.net/grd_java/article/details/125462241 |
---|
LeetCode1109:航班预订统计https://blog.csdn.net/grd_java/article/details/125460973 |
---|
LeetCode1854:人口最多的年份https://blog.csdn.net/grd_java/article/details/125462716 |
---|
LeetCode 面试题 16:10. 生存人数https://blog.csdn.net/grd_java/article/details/125455739 |
---|
2. 数据库
四、剑指 Offer
剑指 Offer 22. 链表中倒数第k个节点https://blog.csdn.net/grd_java/article/details/124059025 |
---|
剑指 Offer 119:最长连续序列https://blog.csdn.net/grd_java/article/details/125294990 |
---|
五、牛客网
1. 华为机试
HJ1 字符串最后一个单词的长度https://blog.csdn.net/grd_java/article/details/125295816 |
---|
HJ2 计算某字符出现次数https://blog.csdn.net/grd_java/article/details/125295908 |
---|
HJ3 明明的随机数https://blog.csdn.net/grd_java/article/details/125296576 |
---|
HJ4 字符串分隔https://blog.csdn.net/grd_java/article/details/125297454 |
---|
HJ5 进制转换https://blog.csdn.net/grd_java/article/details/125298267 |
---|
HJ6 质数因子https://blog.csdn.net/grd_java/article/details/125298794 |
---|