注意题目中的条件
给定一个有序的数组...(有序是不是可以使用二分查找法来进行相关的搜索)
有些题目中的条件本质是暗示:
--设计一个O(nlogn)的算法(是不是分治或者排序)
--无需考虑额外的空间(我们要开辟额外的空间)
--数据规模大概是10000(设计O(n*n)的算法就可以解决)
当没有思路的时候:
给自己几个简单的测试用例,试验一下
不要忽视暴力解法。暴力解法通常是思考的起点。
优化算法
遍历常见的算法思路
遍历常见的数据结构
空间和时间的交换(哈希表)
预处理信息(排序)
在瓶颈处寻找答案:O(nlogn)+O(n^2);O(n^3)
实际编写问题
极端条件的判断
-数组为空?字符串为空?数量为0?指针为NULL?
变量名
模块化、复用性
对于基本问题,白板编程
编程语言:c++、java、python、js都行