今天中午把leetCode上的题都看了一边,A了142道,由于时间的关系,其余的不做了,只是看了看网上的思想。做的过程中,有些题还是参考了网上的例子,自己确实收获不少,无论从解题思路上,还是在编码规范上。下面是我总结的以后遇到面试题的解题思路。
1、拿道题后,不要急于写代码,首先把需求弄明白,有不明白的及时和面试官交流,这也是面试的一点,然后弄清返回的结果。
2、从简单例子开始一步一步分析,逐步普遍化问题,在纸上距离出来
3、 需要画图的一定要把图画出来。
4、 看看能不能把复杂问题分解成简单的子问题(递归)
5、 一般要求出所有组合的问题,遍历所有节点的问题需要用dfs,bfs
6、 一般求最优解的问题时候需要用到dp,注意最有子结构的查找、最优子结构的保存等。
7、还有些问题需要用到“回溯”
8、对于数组的操作,字符串,看看能不能先排序,简化问题
9、 对于链表,数组,字符串,看看是否能用翻转,两个指针解决
10、 对于数的操作还有可能用到二进制操作。
11 、 查找问题还很肯能用到 BinarySearch
12、对于有时间要求的,一般用空间换时间
13、注意辅助工具,stack,queue,Map,Set 等的使用
14、思路清楚以后,要把,异常,边界情况想清楚,首先处理,避免忘记 (最好形成测试用例)
15、 把需要的变量,工具准备好,在纸上,写好伪代码,然后正式写代码
16、 代码写完以后,自己检查一遍,把各种测试用例测一下,再交给面试官
一般问题都可以通过上面方法解决!