板子:算法题答题三段式
408 算法题固定问三件事:① 基本设计思想;② 用 C/C++ 描述算法,关键处加注释;③ 时间复杂度和空间复杂度。三问分开给分,哪一问都不能空着。
骨架
(1)基本设计思想
第一句点出方法("采用三次逆置""用辅助数组标记""快慢指针"……),
再用 2~3 句把步骤说清;空表、找不到之类的特殊情况顺带交代。
(2)算法实现
[结构体定义:题目给了就照用,没给就先写]
函数代码,关键步骤后面写 // 注释
(3)复杂度
时间复杂度 O(…),空间复杂度 O(…)。(要和自己写的代码对得上)完整样例见 2010 年循环左移。
拿分策略
- 先保底,再求优。想不出最优解就写正确的暴力解。历年评分细则都给「正确但不是最优」的解留了大部分分数,最怕的是追最优解写错,整题丢分。
- 按题目要求定目标:
- 题目写「时间上尽可能高效」:只追求时间,空间可以拿来换时间(2018)。
- 题目写「时间和空间两方面都尽可能高效」:通常要求
额外空间(2010)。
- 思想比代码值钱。时间不够就先把思想写完整,代码只写关键部分。
- 复杂度要和代码一致:写的是暴力解,就如实写暴力解的复杂度。
- 不调 STL 的
sort这类函数:核心步骤直接调库,等于没写算法。 - 不用写头文件和
main,用 C++ 的&和bool没问题。
链接
- 📕 返回:数据结构代码板子
- ⬅️ 上一篇:顺序栈与循环队列
- ➡️ 下一篇:区间逆置与循环左移
- 🔗 五种存储结构的定义与写法约定