大家都是怎么刷的?
非常感谢大家的回复 谢谢
![]() | 1 andrewpsy 2020-08-12 07:36:57 +08:00 via Android ![]() 和世界上提高大部分事物的方法没什么区别:次数加深度。 对于经典题,我一般是实现多解,明白不同解法的利弊。比如有些动态规划的题可以用贪心算法扫一遍就有解了,我非得把它的 top-down 和 bottom-up 也搞一下。 你在一道题上花的时间越多就越难忘,捷径是留给比我们聪明的人的。 |
![]() | 2 loading 2020-08-12 07:50:23 +08:00 via Android ![]() 应聘也就抱佛脚。 平时使用只要知道对应算法优劣和场景,需要的时候能想起来名字就行了。 现在生活中我也就二分和普通冒泡了… |
![]() | 4 cassyfar 2020-08-12 08:09:48 +08:00 可以读下算法导论。干刷 leetcode 基本等于背答案,其实得不到太多解题思路。 |
5 richzhu 2020-08-12 08:27:07 +08:00 我觉着二楼说的没错呀,只要知道哪个算法适用于哪个场景,需要的时候能想起来就好了,至于刷题,纯属是为了面试 |
![]() | 6 metaquant 2020-08-12 08:31:31 +08:00 没刷过 leetcode,主要刷了 project euler,我自己的习惯是每做完一道题就写一个详细的思路分析,这样之后回顾起来能很快找到思路。另外,就是去搜集一下之前以前大神的解法,争取每道题的算法都做到最优,如果有多种解法,就把多种解法的思路都写下来。 有兴趣的话,可以看一下: https://metaquant.org/ |
![]() | 8 masker 2020-08-12 08:37:51 +08:00 via Android 不靠理解靠硬背吗 |
![]() | 9 ericls 2020-08-12 08:53:29 +08:00 via iPhone 不要玩儿算法这个游戏 |
![]() | 10 Accessing 2020-08-12 09:22:20 +08:00 ![]() 会忘很正常,只有经常使用才不容易忘,尽量创造使用场景吧。 |
![]() | 11 Accessing 2020-08-12 09:23:25 +08:00 如果不想使用,只想考试的话,那忘掉就忘掉,没有什么关系,下次考试之前再复习即可。 |
![]() | 12 mathzhaoliang 2020-08-12 09:44:05 +08:00 ![]() @metaquant 我看了一下你的笔记,写的不错,能详细查资料写分析是很难得的了。 projecteuler 上的问题其实不太适合拿来练习算法,因为上面的问题大多数具有较深的数学背景,不懂得背后的数学,仅套用递归、分治、动态规划等常见算法得不出有效解来的。 举个简单的例子:你的置顶文章里面的整数分划问题。你那个递归其实跟斐波那契递归一样,效率很低,指数级爆炸。 实际上 p(n) 有一个 pentagon recurrence 关系,用那个来做递归计算效率高很多。 另外输出所有分划是有一个简单的线性遍历方法的,空间复杂度是 n+1,时间复杂度是 p(n)。 |
![]() | 13 kidlj 2020-08-12 09:47:15 +08:00 编程不是智力游戏,是熟练运用工具。 |
![]() | 15 wenb1 2020-08-12 10:57:41 +08:00 同感 |
![]() | 16 fadaixiaohai 2020-08-12 11:10:08 +08:00 记录下自己的刷题思路,下次浏览一下,立马就记起来了 |
17 EreeBay 2020-08-12 11:25:38 +08:00 没办法,更多时候就是为了应付面试 |
![]() | 18 birdkyle79 2020-08-12 11:40:34 +08:00 很多模式化的题,场景相似的,一般都能很快磕出解法,实在不行也能硬解,这些题一般都有很强规律,也容易触类旁通。 但是一些没有规律的,技巧性很强的题目,想出解法很难,就算写出来了也很快会忘,这很正常,总之,面向面试刷题就行了。 |
![]() | 19 hello2060 2020-08-12 11:46:26 +08:00 @cassyfar 算法导论不如 leetcode, 光是基本的数据结构 array stack list queue priority queue 算法导论里就很大一部分了,动态规划就三个例子,然后就是面试里不算多的图。算法导论就是介绍一个东西,这是啥,有啥用,复杂度是多少 (花了很多时间在推导复杂度上了)。leetcode 则需要你反应过来我需要用这个,这两个不是一个层次的东西。当然没有算法导论里的那些基础,leetcode 也没法刷。。 |
![]() | 20 lewis89 2020-08-12 12:02:02 +08:00 背模板代码.. 然后往里面套 没啥好办法 |
22 guchengyehai1 2020-08-12 12:18:29 +08:00 via Android 一般人只有一遍一遍的刷,死磕精神 |
![]() | 23 raaaaaar 2020-08-12 12:24:42 +08:00 via Android 吃透一道题,而不是刷题。什么意思呢。 每道题都对每种题解画图,分析,最后才写代码,分析时间复杂度,每道题最后写一篇完整的题解发出去。 一道题会设计各种数据结构和算法知识,大概一道题要花几天时间吧,反正过了几个月,到现在我都还记得我刷的一些题大概是些什么,有什么方法。 我不看重数量,只看质量,你能高质量刷几道,你试一试再对比一下就知道了。 |
24 mtrec 2020-08-12 12:50:28 +08:00 via Android 按类型由浅入深刷 一边刷一边总结 同一类其实有框架的 |
![]() | 25 ericgui 2020-08-12 12:58:09 +08:00 讲课,录制出来,放在 b 站 我就是这样的 如果我能讲得出来,说明我就能理解这个题 而且我自己还经常看自己的视频来复习呢。。。。 https://space.bilibili.com/9099840/channel/detail?cid=89640 |
![]() | 26 metaquant 2020-08-12 13:10:04 +08:00 ![]() @mathzhaoliang 如果你往后看,会发现我在七十八题硬币分组(Coin partitions)用了 p(n)的递归关系,因为七十六题问题规模比较小,就直接用了普通的递归算法。 prject euler 确实数学味比较重,这也是相对于 leetcode 我更喜欢刷 project euler 的原因 |
27 charlie21 2020-08-12 13:39:05 +08:00 慢即是快。 |
![]() | 28 mathzhaoliang 2020-08-12 14:33:25 +08:00 @metaquant 看到了,你用的那个就是 pentagonal recurrence 。 |
![]() | 29 dream4ever 2020-08-12 15:37:43 +08:00 没有应用到实际工作中的知识,自然会忘。就像上学时候的考试,啃了一个学期课本,即使期末考个高分,只要后面不再用到,照样忘得一干二净。 |
![]() | 30 kekeekehernando 2020-08-12 21:17:31 +08:00 我刷了三遍( 500 道左右)还不会做的时候的很怀疑自己的算法能力 然后休息了一段时间之后 最近开了第四遍 觉得自己解题能力进步很多了 所以就 多刷多刷 隔一个周期 cool down 下大脑 |
![]() | 31 windliang PRO |
32 Yano 2020-08-13 09:50:30 +08:00 |
33 PythonYXY 2020-08-14 10:03:05 +08:00 practice makes perfect |