面试题训练的重点是把约束转换成结构。二维有序矩阵可从右上角开始:目标更小就左移,更大就下移,每一步排除一行或一列,时间 O(m+n)。链表反转维护三个指针;树的重建依靠前序确定根、中序划分左右子树。

数组旋转最小值可利用局部单调性二分,但重复值会让边界判断失去方向,此时只能保守缩小区间。栈的压入弹出序列验证,可用辅助栈模拟:按压入顺序推进,每次栈顶等于当前弹出值就持续弹出,最终全部匹配才合法。连续子数组最大和可维护“以当前位置结尾的最大和”,转移为继续累加或从当前数重新开始。

复杂度表达应对应机制:矩阵搜索不访问每个格子,而是最多移动行列之和;树重建若每次在线性查中序根会到 O(n²),用哈希表记录下标可降为 O(n);辅助栈验证为 O(n) 时间和 O(n) 空间。

解题时先复述输入、输出及空值约定,再给暴力基线,随后指出利用的有序性、重复状态或数据结构。写完应测试空输入、单元素、重复值、全负数、退化树和整数溢出。若题目允许修改输入,也要主动说明。

误区是背住某道题的代码,却无法解释边界为何移动;或者只报最终复杂度,不交代隐藏的库调用。小结:题目集合并非知识点清单,真正要练的是从约束发现不变量,并用测试验证实现与不变量一致。