leetcode-刷题经验

以下内容来自本人在 一亩三分地 论坛上开帖得到的回复。

既然慢就多思考优化呀。。。通常有以下思路 (临时总结,仅供参考):

*1. 找性能瓶颈。比如排序是nlogn最耗时,有没有办法不排序直接得到答案?比如two sum,不排序,直接上hashmap
2. 优化代码。有挺多种情况
(1) 有没有多余的操作?比如不必要的copy
(2) 递归能不能换迭代?在递归的overhead比较高的时候,提升会明显一些
(3) 有没有可能剪枝避免重复操作?个人觉得,DP的memorization有一点点剪枝的感觉,然后就是比如combination sum那种backtracking的题,并不需要全部solution都试一遍
(*4) 巧妙的操作或者数据结构。比如bit operation,或者用数组代替hashmap,因为hashmap(比如c++中)多少还是有overhead的
*3. 找新的算法。去看书,搜blog或者看论坛discussion。

国内很多blog只要解出来就贴,感觉比较浮躁,当然也有好的。可以选择直接看leetcode的discussion啊。。。带星号的表示可能稍微难一点,但是多加练习就不难了。
然后大概时间能在大多数人在的范围就可以了,中等或者中等偏上。论坛有些神人解法很叼,可以参考,但是不适合面试的时候用(非大牛的话),除非你就是研究算法的。。。。

你可能感兴趣的:(leetcode)