大家都是怎么刷的?
非常感谢大家的回复 谢谢
1
andrewpsy 2020-08-12 07:36:57 +08:00 via Android 19
和世界上提高大部分事物的方法没什么区别:次数加深度。
对于经典题,我一般是实现多解,明白不同解法的利弊。比如有些动态规划的题可以用贪心算法扫一遍就有解了,我非得把它的 top-down 和 bottom-up 也搞一下。 你在一道题上花的时间越多就越难忘,捷径是留给比我们聪明的人的。 |
2
loading 2020-08-12 07:50:23 +08:00 via Android 1
应聘也就抱佛脚。
平时使用只要知道对应算法优劣和场景,需要的时候能想起来名字就行了。 现在生活中我也就二分和普通冒泡了… |
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/ |
7
TwoDogSon 2020-08-12 08:33:40 +08:00
最近外界刚需 开始刷题 先从简单的开始 找自信 然后再中等难度 我应试复习法 能 pass 就好 今天没做出来的 看题解理解会 明天独立完成一边
|
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 2
会忘很正常,只有经常使用才不容易忘,尽量创造使用场景吧。
|
11
Accessing 2020-08-12 09:23:25 +08:00
如果不想使用,只想考试的话,那忘掉就忘掉,没有什么关系,下次考试之前再复习即可。
|
12
mathzhaoliang 2020-08-12 09:44:05 +08:00 1
@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
bear2000 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 1
@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 2020-08-13 00:37:05 +08:00
|
32
Yano 2020-08-13 09:50:30 +08:00
|
33
PythonYXY 2020-08-14 10:03:05 +08:00
practice makes perfect
|