java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新

本文相当于目录方便快速检索内容,没有实际内容,只做索引

🏆:有此标记的题,表示为经典题,必须优先掌握。要保证看到的一瞬间,无需过脑就能知道如何操作(大概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 41321654=5种出栈顺序

  1. A n m = A_{n}^m = Anm=从n开始从大往小,m个数相乘
  2. C n m = A n m A m m C_{n}^m = \dfrac{A_{n}^m}{A_{m}^m} Cnm=AmmAnm
  3. 例如 C 2 n n = A 2 n m A n n C_{2n}^n = \dfrac{A_{2n}^m}{A_{n}^n} C2nn=AnnA2nm
  4. 例如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=321654=20
四平方和定理:相关题目LeetCode279. 完全平方数
  1. 四平方和定理:任意正整数x,可被最多4个正整数的平方和(完全平方数)表示。
  2. 结论一:当 n = 4 k ∗ ( 8 ∗ m + 7 ) n = 4^k * (8*m + 7) n=4k(8m+7)时,n只能被4个正整数的平方和表示。

这是一个判断条件,k和m表示随便一个数,只要n能满足即可。可以说只要 n 满足 4 k ∗ ( 8 ∗ m + 7 ) n 满足 4^k * (8*m + 7) n满足4k(8m+7)这样的条件,n就只能被4个正整数平方和表示

  1. 结论二:当前仅当 n ≠ 4 k ∗ ( 8 ∗ m + 7 ) n \not = 4^k * (8*m + 7) n=4k(8m+7)时,n才可以被3个及以下(至多3个)正整数平方和表示

常用API

数字处理相关
  1. 转换字符串为Int类型
int a = Integer.parseInt("数字");//将字符串转换为int类型数字
Integer i = Integer.valueOf("123");//将字符串转换为Integer类型
  1. 转换字符为int型
char c = '1';
int a = c-'0';
int a = c-48;
  1. 进制转换
//十进制转其它进制
Integer.toString(要转换的十进制数,要转成几进制);
链表相关
//将处理时速度更快的数组,转换为链表。
Integer[] records = new Integer[5];
List.of(records);//将records转为链表
大根堆,小根堆

java优先级队列就是堆实现。默认是大根堆

  1. 小根堆实现方法
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;
                }
            });
  1. 大根堆实现方法
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),达到空间换时间的效果。它仅仅只是一种优化思路,因此它目前的境地和线性代数一样----虚假的难。

  1. 想想线性代数,在国外留学的学生大多数不觉得线性代数难理解。但是中国的学生学习线性代数时,完全摸不着头脑,一上来就是行列式和矩阵,根本不知道这玩意是干嘛的。
  2. 线性代数从根本上是在空间上研究向量,抽象上研究线性关系的学科。人家国外的教科书都是第一讲就帮助大家理解研究向量和线性关系。
  3. 反观国内的教材,直接把行列式搞到第一章。搞的国内的学生在学习线性代数的时候,只会觉得一知半解,觉得麻烦,完全不知道这玩意学来干什么。当苦尽甘来终于理解线性代数时干什么的时候,发现人家国外的教材第一节就把这玩意讲清楚了。你只会大骂我们国内这些教材,什么狗东西(以上是自己学完线性代数后的吐槽,我们同学无一例外都这么觉得)。

而我想告诉你,动态规划和线性代数一样,我学完了才知道,它不过就是研究空间换时间,提前将固定的重复操作规划到dp数组中,而不用暴力求解,从而让效率极大提升。

  1. 但是网上教动态规划的兄弟们,你直接给一个动态方程是怎么回事?和线性代数,一上来就教行列式和矩阵一样,纯属恶心人。我差不多做了30多道动态规划题目,才理解,动态方程只是一个步骤而已,而这已经浪费我很长时间了,我每道题都一知半解不理解,过程及其痛苦。最后只能重新做。
  2. 动态规划,一定是优先考虑重复操作与dp数组之间的关系,搞清楚后,再提出动态方程。而你们前面步骤省略了不讲,一上来给个方程,不是纯属扯淡吗?
  3. 我推荐研究动态规划题目,按5个步骤,从上到下依次来分析
  1. DP数组及下标含义
  2. 递推公式
  3. dp数组初始化
  4. 数组遍历顺序(双重循环及以上时,才考虑)
  5. 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
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

殷丿grd_志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值