Algorithm topic

数组 / 字符串:模式识别与解题模板

本专题包含 24 道题。先辨认输入结构和目标,再选择能够持续保持关键不变量的算法,而不是只记住某一道题的代码。

高频模式

数组18 道题

观察题目是否反复出现“数组”对应的数据访问、状态压缩或边界推进特征。

双指针8 道题

观察题目是否反复出现“双指针”对应的数据访问、状态压缩或边界推进特征。

字符串8 道题

观察题目是否反复出现“字符串”对应的数据访问、状态压缩或边界推进特征。

动态规划5 道题

观察题目是否反复出现“动态规划”对应的数据访问、状态压缩或边界推进特征。

贪心5 道题

观察题目是否反复出现“贪心”对应的数据访问、状态压缩或边界推进特征。

哈希表4 道题

观察题目是否反复出现“哈希表”对应的数据访问、状态压缩或边界推进特征。

核心模板

  1. 先写清输入规模、目标值和允许修改的数据。
  2. 定义每一步开始和结束时必须成立的不变量。
  3. 把循环、递归、队列或状态转移拆成可验证事件。
  4. 用最小输入、重复值和退化结构验证边界。

常见错误

  • 只根据样例选择算法,没有核对复杂度上限。
  • 更新多个指针或状态时破坏旧值依赖。
  • 忽略空输入、重复值、断开结构或极端顺序。
  • 代码结果正确,但解释没有说明为什么不会漏解或重复。

代表题

#27 · EASY

移除元素

原地移除所有等于 val 的元素,返回新长度。

数组双指针
#169 · EASY

多数元素

找到出现次数超过一半的元素。

数组哈希表分治计数排序
#189 · MEDIUM

轮转数组

把数组向右轮转 k 步。

数组数学双指针
查看本分类全部 24 道题