今天头条二面,两道算法题,一是:交换数字位置变为最大,NO670,要求O(n),之前在leetCode做题很少想过找出最优的解法,今天遇到了,怎么也想不出来,一开始用的$O(n^2)$,提示说O(n),想着怎么一次遍历过来,其实有时候思维定势,看到$O(n)$就想着一次遍历,其实只要不是n次遍历,都行,第二题是个简单的二分,但是其中一个条件,mid多加了1,有bug,应该是没了,最好的一次机会白白丢失了。明明很简单的题,就像考试一样,做题时候脑子里一片空白,老是犯错误,从大三到现在还是没有找到方法去改变。
有时候,在想边界问题的时候一定要清晰是怎么回事。整体有了思路之后,再开始写代码,不然会来回修改代码,很容易造成有变量遗漏,从而出现问题。
做完题之后,进行思考是很有帮助的,不然每次做题的收获很少,没过两天就忘记了。
- 一定要定时复习,不然看过的东西跟没看一样,就像之前的英语和日语单词一样,很眼熟但是就是想不起来。
现在时间已经不够了,多多利用吧。面试之后找到不足,也找到了努力的方向,春招加油吧。