LeetCode题目分类整理

华为8.31

模板整理
排序算法
mysql题目
java多线程设计

java一些小语法

文章目录

    • Hash相关
    • 链表操作
    • 双指针遍历/滑动窗口
    • 字符串操作
    • 数组操作
    • 栈 / 堆
    • 位运算
    • 分治法/二分法
    • 贪心
    • 动态规划
    • 回溯法/dfs
    • BFS
    • 其他

Hash相关

1、两数之和【简单】
128、最长连续序列【中等】(并查集)
387、字符串中第一个唯一字符【简单】
447、回旋镖的数量【中等】
523、连续的子数组和【中等】(前缀和)
560、和为k的子数组【中等】(前缀和)
2055、蜡烛之间的盘子【中等】(前缀和)

链表操作

2、两数相加【中等】
19、删除链表倒数第n个节点【中等】
24、两两交换链表中的节点【中等】
25、K个一组反转链表【困难】 \ 92、反转部分链表
61、旋转链表【中等】
82、删除排序链表中的重复元素 II【中等】
138、复制带随机指针的链表【中等】(深拷贝)
141、环形链表【简单】/142、环形链表入口/ 287、寻找重复数【中等】(快慢指针)
143、重排链表【中等】
160、相交链表【简单】
206、反转链表【简单】
328、奇偶链表【中等】

21、合并两个有序链表【简单】
23、合并K个升序链表【困难】(分治、归并)
148、排序链表【中等】(归并排序)

1206、设计跳表【困难】

双指针遍历/滑动窗口

双指针
11、盛最多水的容器【中等】
15、三数之和【中等】
16、最接近的三数之和【中等】
26、删除排序数组中的重复项【简单】(读写双指针)
41、缺失的第一个正数【困难】(原地交换)
443、压缩字符串 / 面试题01.06【中等】(读写双指针)
524、通过删除字母匹配到字典里最长单词【中等】
838、推多米诺【中等】

滑动窗口
03、无重复字符串的最长子串【中等】
76、最小覆盖子串【困难】(滑动窗口+字母计数hash)
209、长度最小的子数组【中等】
239、滑动窗口的最大值【困难】(单调栈/优先队列)
438、找到字符串中所有字母异位词【中等】(滑动窗口+字母计数hash)

字符串操作

6、Z字形变换【中等】
8、字符串转换整数 (atoi)【中等】
14、最长公共前缀【简单】(LCP)
28、实现strStr()【简单】(KMP困难)
165、比较版本号【中等】
415、字符串相加【简单】(36进制加法)
763、划分字母区间【中等】

数字操作

7、整数反转【简单】
9、回文数【简单】
2165、重排数字的最小值【中等】(转为string)

数组操作

31、下一个排列【中等】
36、有效的数独【中等】
54、螺旋矩阵【中等】
56、合并区间 / 435、无重叠区间 / 452、用最少数量的箭引爆气球【中等】
73、矩阵置零【中等】
169、多数元素 / 229、求众数2【简单】(摩尔投票)
581、最短无序连续子数组【中等】
1122、数组的相对排序【简单】(计数排序)

树状数组
315、计算右侧小于当前元素的个数【困难】
剑指 Offer 51、数组中的逆序对【困难】(数组转换)
1395、统计作战单位数【中等】
2179、统计数组中好三元组数目【困难】

字典树、前缀树
208、实现 Trie (前缀树)【中等】
720、词典中最长的单词【简单】

栈 / 堆

20、有效的括号 / 678、有效的括号字符串【中等】
32、最长有效括号【困难】
150、逆波兰表达式求值【中等】
155、最小栈【简单】
394、字符串解码【中等】
1190、反转每对括号间的子串【中等】

单调栈
402、移掉k位数字【中等】
496、503、下一个更大元素【中等】|| 739、每日温度
42、接雨水【困难】
84、柱状图中最大的矩形 / 85、最大矩形【困难】

位运算

191、位1的个数【简单】
剑指65、不用加减乘除做加法【简单】
318、最大单词长度乘积【中等】(字符串转化为二进制)
剑指 Offer 56、数组中数字出现的次数【中等】
1684、统计一致字符串的数目【简单】(字符串转化为二进制)

分治法/二分法

33-查找旋转数组不重复;81-查找旋转数组可重复复;
153-旋转数组最小值不重复;154旋转数字最小值重复,
33、81、搜索旋转排序数组【中等】
153、154、寻找旋转排序数组中的最小值 【困难】

4、寻找两个正序数组的中位数【困难】
34、在排序数组中查找元素的第一个和最后一个位置【中等】(注意边界)
2080、区间内查询数字的频率【中等】(和34区别)
50、 pow(x, n)【中等】
69、x的平方根【简单】
162、寻找峰值【中等】
剑指 Offer 53 - II. 0~n-1中缺失的数字【简单】(注意特殊情况)
378、有序矩阵中第 K 小的元素【中等】(优先队列、归并、二分)
1508、子数组和排序后的区间和【中等】(参考378)
658、找到 K 个最接近的元素【中等】
875、爱吃香蕉的珂珂【中等】

贪心

55、45、跳跃游戏12【中等】
135、分发糖果【困难】(从前向后+从后向前)
238、除自身以外数组的乘积【中等】(从前向后+从后向前)
334、递增的三元子序列【中等】
406、根据身高重建队列【中等】(排序)
738、单调递增的数字【中等】
781、森林中的兔子【中等】(上取整)
861、翻转矩阵后的得分【中等】
1221、分割平衡字符串【简单】(左0右1)

动态规划

背包问题
背包问题416、494、474、879、1049、279、322、377、518
2212、射箭比赛中的最大得分【中等】
数组 / 字符串
5、最长回文子串 / 647、回文子串 / 516、最长回文子序列【中等】
10、正则表达式匹配【困难】
72、编辑距离【困难】
97、交错字符串【中等】
132、分割回文串2【困难】(分界)
718、最长重复子数组 / 1143、最长公共子序列【中等】(LCS)
300、最长递增子序列 【中等】
1713、得到子序列的最少操作次数【困难】(数组转换+300)

不太动归的动归
53、最大子序和【简单】
121、买股票的最佳时机【简单】

纯模拟
62、不同路径【中等】
64、最小路径和【中等】
70、爬楼梯【简单】、1269、停在原地的方案数【困难】
118、杨辉三角【简单】
120、三角形最小路径和【中等】
221、最大正方形+1277、统计全为1 的正方形子矩阵【中等】
264、丑数2【中等】(三指针)
1262、可被三整除的最大和(三指针)

其他
91、解码方法 / 剑指 Offer 46、把数字翻译成字符串【中等】
139、单词拆分【中等】(分界)
152、乘积最大子数组【中等】
198、213、337、打家劫舍123【中等】
309、最佳买卖股票时机含冷冻期【中等】
375、猜数字大小2【中等】(分界,最小次数)
887、鸡蛋掉落【困难】(最小次数)
926、将字符串翻转到单调递增【中等】(左0右1最少)
2167、移除所有载有违禁货物车厢所需的最少时间【困难】(左0右1最少)
935、骑士拨号器【中等】
1553、吃掉 N 个橘子的最少天数【困难】(记忆化递归)
2156、查找给定哈希值的子串【中等】(倒着遍历)
2163、删除元素后和的最小差值【困难】(左右差值)

回溯法/dfs

经典回溯(path + res)
77、组合【中等】
17、电话号码的字母组合【中等】
39、40、216、组合总和123【中等】
78、子集【中等】/ 90、子集2(无重复)
46、 47、剑指38、全排列 / 491、 递增子序列【中等】(used数组)
332、重新安排行程【困难】(used数组)
131、分割回文串【中等】(isVaild)
51、N皇后【困难】(isVaild)
37、解数独【困难】(有返回值)
842、将数组拆分成斐波那契序列【中等】

回溯藏在函数参数里(无撤销)
22、括号生成【中等】
301、删除无效的括号【困难】
93、复原IP地址【中等】(两个index)
112、113、437、路径总和123【中等】
257、二叉树的所有路径【简单】
513、找树左下角的值【中等】
2044. 统计按位或能得到最大值的子集数目【中等】
2049、统计最高分的节点数目【中等】

dfs
79、单词搜索【中等】
200、岛屿数量【中等】/463、岛屿周长 / 695、岛屿的最大面积
剑指13、机器人的运动范围【中等】(dfs+bfs)
547、省份数量【中等】

BFS

210、课程表2【中等】/207、课程表(邻接表/拓朴排序/贪心算法/BFS)
994、腐烂的橘子【中等】
1293、网格中的最短路径【困难】
2192、有向无环图中一个节点的所有祖先【中等】

二叉树
参考一些题的总结
树与简单的递归(dfs)
101、对称二叉树
104、二叉树的最大深度
559、N 叉树的最大深度
110、平衡二叉树
543、二叉树的直径
226、翻转二叉树
236、二叉树的最近公共祖先
235、二叉搜索树的最近公共祖先
563、二叉树的坡度
617、合并二叉树
剑指26、树的子结构
面试题 04.10. 检查子树

124、二叉树中的最大路径和【困难】
968、监控二叉树【困难】

二叉搜索树

二叉搜索树与简单递归
98、验证二叉搜索树
99、恢复二叉搜索树
108、将有序数组转换为二叉搜索树
109、有序链表转换二叉搜索树
530、二叉搜索树的最小绝对差
701、二叉搜索树中的插入操作
450、删除二叉搜索树中的节点
669、修剪二叉搜索树
501、二叉搜索树中的众数
538、把二叉搜索树转换为累加树
剑指36、二叉搜索树与双向链表

剑指 Offer 33、二叉搜索树的后序遍历序列【中等】
96、不同的二叉搜索树【中等】

树的遍历

94、144、145二叉树的中序、前序、后序遍历【中等】
102、二叉树的层序遍历【中等】(BFS)
105、从前序和中序遍历构造二叉树 / 654、最大二叉树【中等】
114、二叉树展开为链表【中等】
430、扁平化多级双向链表【中等】
662、二叉树的最大宽度【中等】(BFS)
863、二叉树中所有距离为 K 的结点【中等】
919、完全二叉树插入器【中等】(BFS)

440、字典序的第K小数字【困难】(十叉树)

其他

剑指offer45、把数组排成最小的数(变异快排)
215、数组中的第K个最大元素【中等】 (堆排序)
347、前K个高频元素【中等】(堆排序)
451、根据字符出现频率排序【中等】(桶排序)

146、LRU缓存机制【中等】(双向链表+哈希表)
460、LFU缓存机制【困难】

398、随机数索引【中等】(蓄水池抽样)
470、rand7实现rand10【中等】
java多线程设计(多线程)

中文汉字转阿拉伯数字

你可能感兴趣的:(leetcode,leetcode,链表,java)