一、审题
看到问题,首先要确保自己已经分析清楚了问题,可以简单的按照以下几个步骤:
(1)看题目表述;
(2)看例子按照例子走一边过程;
(3)自己加些例子;
(4)注意边界;
二、分析题目
(1)首先根据输入输出和题干,分析要做什么
(2)分析要怎么做,找规律?递推?动态规划?暴力?递归?哈希?集合?双指针?
(3)将问题定位缩小,划分到某一类或者几种方法中解决,大问题划分成小问题,比如:查询多->哈希;树->递归,
图->矩阵、邻接表等等;
三、算法设计
(1)首先设计最简单,最暴力的算法,比如:循环,遍历、挨个查找,不考虑时间复杂度和空间复杂度;
(2)考虑优化算法,降低时间复杂度,降低空间复杂度;
(3)多次分析问题,寻找规律,脑子里想想问题可以抽象成什么模型,什么算法适用,这样的算法需要注意什么问题;
(4)设计新的高效的算法;
(5)考虑边界;
四、编码
(1)注意命名规范;
(2)注意尽量不要复制粘贴代码,很容易出错;
(3)写一段编码时,注意联系当前的情况,不可以走神,然后用思维定时的方式去编码;
(4)注意逻辑不要错了,当作这么写是要做什么,访问谁,改变谁等等;
五、测试样例
(1)首先测试题目给出的样例;
(2)然后找极端情况、常规、边界的例子,这个需要在分析题目时做好准备工作;
(3)随意测试一些其他例子;
六、检查
对照题目从头到尾过一遍代码逻辑,审核下是否有逻辑漏洞。
七、一些常见问题的算法套路
(1)