Skip to content

Latest commit

 

History

History
18 lines (13 loc) · 2.65 KB

File metadata and controls

18 lines (13 loc) · 2.65 KB

总结

最大的收获就是走出了以前刷题的误区。以前我总喜欢死磕,有时候甚至用一整天来死磕一道题。另一大误区就是以前以为题刷一遍就够了。因为这些错误的认识,我错过了不少好的机会。感谢训练营,帮我纠正了刷题方法, 我感觉刷题的效率明显比以前高了,如果平时能挤出更多时间用于刻意练习,我有信心扫平各种面试。

做题应该养成好的解题习惯

我非科班出生,一些科班必修的课程,比如离散数学,逻辑学等重要的课程都不曾学习过。这些课程教授的知识在解题中的重要性并不低于数据结构和算法。数据结构和算法为解题提供工具,而这些数理课程提供的是思路。没有思路,工具再多也没用,因为不知道怎么用。 几百道题刷下来,对于简单或中等的题,我感觉多数只要知道某个数据结构或算法就可以解决,因为这些题的目的就是为了帮助我们巩固相关的知识。但是难题就不一样了。难题考察的是我们解决问题的能力,看看我们在拿到一道题以后,能不能有思路,然后选择合适的工具把问题解决。那么可以说,解难题最重要的是思路,而具备良好的数理知识的储备对快速找到正确的思路有极大的帮助。可惜,我欠缺这方面的知识,在解难题时明显感到吃力,哪怕有时候找到了正确的思路,因为不知如何证明,所以无法确定它是不是真的是对的。于是经常游离于多种岔路上,不知所措。 如果想在解题能力上更上一层楼,长远来看,我一定要补数理知识。在近期来看,似乎能做的不多,但还是可以有改进余地的。比如,我可以在解题过程中养成良好的解题习惯。 在解题中,首先仔细审题,详尽地弄清每个细节。 然后找到具有典型性的测试案例,最好有三个或以上,这些案例不仅有利于启发思路,而且可以在测试时使用,一举两得。 当有思路时,不要急于动手做题,把思路列下来,最好用图来辅助把不同的case或state枚举清楚,当确定这个思路可以解决所有测试案例后,开始做题。 不必担心写code的时间不够,当前面几步都做扎实了,写code的时间应该不会超过10分钟,具体时间取决于代码量。 写完以后,把测试案例过一遍,如果测试全部完成,则这道题就算完成了。

那么最关键的,就是举出三个测试案例这一步。这一步可以让面试官帮忙出example,作为clarification的一部分,也可以自己想几个edge cases。