朴素算法Bare Algo

数组

线性扫描、区间前缀和及原地哈希。

算法题

(19)

第 1 阶段:先把线性扫描练顺

先练“扫一遍数组时,手里到底要维护什么状态”。这一阶段先不追求花哨技巧,重点是下标、顺序和原地修改。

1. 两数之和

简单
数组哈希表

26. 删除有序数组中的重复项

简单
数组双指针

283. 移动零

简单
数组双指针

88. 合并两个有序数组

简单
数组双指针排序

121. 买卖股票的最佳时机

简单
数组动态规划

第 2 阶段:学会从局部规则推出全局答案

这里开始把“一次扫描”做出层次。你会接触候选人抵消、局部最优延续、翻转重排和区间排序。

169. 多数元素

简单
数组哈希表分治排序计数

53. 最大子数组和

中等
数组分治动态规划

189. 轮转数组

中等
数组数学双指针

56. 合并区间

中等
数组排序

57. 插入区间

中等
数组

第 3 阶段:把一维思路推广到前缀和和矩阵

这一阶段是数组专题真正拉开差距的部分。核心是拆贡献、改写区间和,以及把二维题写成边界或标记问题。

238. 除了自身以外数组的乘积

中等
数组前缀和

73. 矩阵置零

中等
数组哈希表矩阵

54. 螺旋矩阵

中等
数组矩阵模拟

48. 旋转图像

中等
数组数学矩阵

240. 搜索二维矩阵 II

中等
数组二分查找分治矩阵

560. 和为 K 的子数组

中等
数组哈希表前缀和

第 4 阶段:冲击高频进阶题

最后开始处理选择问题和高阶原地哈希。不要只背解法,要能解释为什么这些题都在减少无效比较。

215. 数组中的第K个最大元素

中等
数组分治排序堆快速选择

448. 找到所有数组中消失的数字

简单
数组哈希表

41. 缺失的第一个正数

困难
数组哈希表