注意题目中的条件
- 给定一个 有序 数组
- 设计一个 O(nlogn) 的算法
- 无需考虑额外的空间
- 数据规模大概是10000(规模小)
当没有思路的时候
- 给自己几个简单的测试用例,试验一下
- 不要忽视暴力解法(暴力解法通常是思考的起点)
找优化算法
- 遍历常见的算法思路
- 遍历常见的数据结构
- 空间和时间的交换(哈希表)
- 预处理信息(排序)
- 在瓶颈处寻找答案:O(nlogn) + O(n^2) 看看瓶颈O(n^2)能不能改进
实际编写问题
- 极端条件的判断:数组为空?字符串为空?数值为0?指针为NULL?
- 变量名
- 模块化,复用性
- 对于基本问题,白板编程