【Leetcode 题解】Leetcode分类 题解,持续更新.....

Leetcode分类 题解,持续更新…

文章目录

  • Leetcode分类 题解,持续更新.....
  • 一、基础
    • 1. 水题
    • 2. 位运算
    • 3. 区间问题
    • 4. Python语言特性
    • 5.排列组合
    • 6.思维题
    • 7. 数论
    • 8. 模拟
    • 9.数组
    • 10.博弈
      • 10.1 Nim
  • 二、数据结构
    • 1. 基础数据结构
      • 1.1 栈
      • 1.2 链表
      • 1.3 队列
    • 2. 树
      • 2.1 二叉树
      • 2.2 大顶堆、小顶堆
    • 3 线段树、树状数组
      • 3.1 单点更新
      • 3.2 区间更新
  • 三、算法
    • 1. 动态规划
    • 2. 贪心
    • 3. 排序
      • 3.1 前K大问题
      • 3.2 桶排序
      • 3.3 自定义比较函数
      • 3.4 插入排序
      • 3.n 其他
    • 4. 搜索
      • 4.1 DFS
      • 4.2 BFS
    • 5. 查找
      • 5.1 二分查找


一、基础

1. 水题

49. 字母异位词分组(水题)
118. 杨辉三角(水题)
217. 存在重复元素(水题)
242. 有效的字母异位词(水题)
283. 移动零(水题)
290. 单词规律(水题)
387. 字符串中的第一个唯一字符(水题)
463. 岛屿的周长(水题,遍历每个点的四周)
925. 长按键入 (字符串比较)
941. 有效的山脉数组(水题,遍历求解)
1207. 独一无二的出现次数 (水题,击败100% 用户时间!)
1365. 有多少小于当前数字的数字(排序预处理,线性求解)
1370. 上升下降字符串(水题)

2. 位运算

234. 回文链表 (异或法求解,空间复杂度O(1), 时间复杂度O(n))
389. 找不同(异或法求解,击败100%用户时间)
476. 数字的补数 (位运算 异或)
1356. 根据数字二进制下 1 的数目排序

3. 区间问题

57. 插入区间(区间标记)
327. 区间和的个数(线段树/树状数组)转载
493. 翻转对(离散化+线段树/树状数组)
763. 划分字母区间(预处理后缀相同字符的位置,O(n)贪心遍历求解)
976. 三角形的最大周长(滑动窗口)

4. Python语言特性

349. 两个数组的交集(set求交集)
381. O(1) 时间插入、删除和获取随机元素 - 允许重复 (高效算法,语言特性)
452. 用最少数量的箭引爆气球(贪心,区间问题)

5.排列组合

31. 下一个排列(排列)

6.思维题

134. 加油站(贪心、思维)
406. 根据身高重建队列(思维)
454. 四数相加 II(预处理优化)
621. 任务调度器(排序 可用堆/优先队列进行优化)

7. 数论

204. 计数质数(欧拉线性筛)

8. 模拟

738. 单调递增的数字(模拟)

9.数组

48. 旋转图像(数组)

10.博弈

10.1 Nim

292. Nim 游戏

二、数据结构

1. 基础数据结构

1.1 栈

316. 去除重复字母(栈,贪心)
321. 拼接最大数(单调栈)
402. 移掉K位数字(单调栈)
844. 比较含退格的字符串(栈)

1.2 链表

143. 重排链表(转化成线性表)
147. 对链表进行插入排序(链表排序)
328. 奇偶链表(双指针)
148. 排序链表(排序)

1.3 队列

2. 树

2.1 二叉树

103. 二叉树的锯齿形层序遍历(BFS, 二叉树层次遍历)
129. 求根到叶子节点数字之和 (先序遍历,记录根到叶子节点的值)
144. 二叉树的前序遍历(树的前序遍历根左右,递归求解)
222. 完全二叉树的节点个数(二叉树层次遍历)

2.2 大顶堆、小顶堆

659. 分割数组为连续子序列(堆 + 贪心)
767. 重构字符串(大顶堆+贪心)

3 线段树、树状数组

3.1 单点更新

327. 区间和的个数(线段树/树状数组)转载
493. 翻转对(离散化+线段树/树状数组)

3.2 区间更新

三、算法

1. 动态规划

62. 不同路径(动态规划)
714. 买卖股票的最佳时机含手续费(动态规划)
746. 使用最小花费爬楼梯(动态规划)
845. 数组中的最长山脉(动态规划预处理,求最长上升和最长下降和的最大值)

2. 贪心

122. 买卖股票的最佳时机 II(贪心、水题)
134. 加油站(贪心、思维)
135. 分发糖果(贪心)
316. 去除重复字母(栈,贪心)
376. 摆动序列(贪心)
452. 用最少数量的箭引爆气球(贪心,区间问题)
455. 分发饼干(贪心)
649. Dota2 参议院(贪心)
659. 分割数组为连续子序列(堆 + 贪心)
767. 重构字符串(大顶堆+贪心)767. 重构字符串(大顶堆+贪心)
860. 柠檬水找零(贪心)
861. 翻转矩阵后的得分(贪心)
1024. 视频拼接(区间预处理,贪心)

3. 排序

3.1 前K大问题

973. 最接近原点的 K 个点(自定义距离比较函数)

3.2 桶排序

164. 最大间距(桶排序+分块)
922. 按奇偶排序数组 II(桶排序)

3.3 自定义比较函数

1030. 距离顺序排列矩阵单元格(水题,曼哈顿距离排序)
1122. 数组的相对排序(标记位置,自定义排序函数)

3.4 插入排序

147. 对链表进行插入排序(链表排序)

3.n 其他

148. 排序链表(排序)

4. 搜索

4.1 DFS

37. 解数独(预处理+DFS)
140. 单词拆分 II(DFS搜索+记忆化剪枝)
842. 将数组拆分成斐波那契序列(DFS)

4.2 BFS

103. 二叉树的锯齿形层序遍历(BFS, 二叉树层次遍历)
127. 单词接龙(双向BFS)
514. 自由之路(BFS+优先队列)

5. 查找

5.1 二分查找

34. 在排序数组中查找元素的第一个和最后一个位置(二分、lower_bound、upper_bound)

你可能感兴趣的:(Leetcode,Leetcode,算法,数据结构,python)