分享丨算法技巧常见题型、模板总结(2024.3.28更新)
1672
2024.03.28
2024.05.10
发布于 未知归属地

本文意在总结常见的 算法技巧的题型和模板 ,并不断更新。
此处算法技巧指的不是传统套路算法,例如滑动窗口,二分等,而更像是某种 算法思想 或者 题目套路

下面按照算法技巧中用到的数据结构进行分类总结:

  • 本质:能在 维护 数组内元素不断变化 的同时,还得能很快找到 数组内的最大值(最小值) ,这就是 堆 。

具体 技巧的题型和模板 分别参考以下题解:

  1. 经典数组TopK(基础)
  • 【 关键问题:找一个 数组内的前 k 个数
  1. 矩阵(二维)TopK(基础)
  • 【 关键问题:找一个 矩阵内的前 k 个数
  1. 贪心堆 / 懒删除堆(基础)
  • 【 关键问题:堆模拟 和 构造 相邻元素值不同 的数组 】
  1. 反悔(贪心)堆
  • 【 关键问题:维护堆首数据是最优解

哈希表

  1. 前缀和+哈希表(基础)
  • 【 关键问题:找符合要求的 子数组和最大最小长度/个数
  1. 两数之和思想应用题(基础)
  • 【 关键问题:哈希表计数等】

  1. 栈+字符串匹配(基础)
  • 【 关键问题:利用栈的性质实现 一个字符匹配其左边的离它最近的字符 (经典题目:括号题等)】
  1. 栈妙解根据相邻元素删除元素的题目(基础)
  • 【 关键问题:根据 相邻元素的性质 来删除元素,用栈模拟】

数组

  1. 前后缀分解(基础)
  • 【 关键问题:借助维护 前缀数组后缀数组 的信息,完成统计 (经典题目:接雨水等)】
  1. 进位制转换(基础)
  • 【 关键问题:进位制转换 】
  1. 贡献法(进阶)
  • 【 关键问题:评估 每一个数组元素对于答案的贡献度
  1. 差分数组(基础)
  • 【 关键问题:维护一个 子数组同时加上/减去一个数
  1. 回文子串中心拓展法(基础)
  • 【 关键问题:暴力实现回文子串 】
  1. 分组循环(基础)
  • 【 关键问题:数组会被 分割成若干组 ,且 每一组的判断/处理逻辑是一样的 。 】
  1. 预处理回文数(进阶)
  • 【 关键问题:预处理回文数解决相关问题 】
  1. 贪心构造0-n(进阶)
  • 【 关键问题:贪心构造从1到n的数组 】
  1. 中位数贪心(基础)
  • 【 关键问题:求数轴上有 个点,然后求 一个数使得该点到数轴上所有点的距离之和最小 ,那这个数一定是在 最中间的点 处。 】
  1. 区间合并(基础)
  • 【 关键问题:不同区间有重叠就需要合并
评论 (0)